summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSarah Smith <sarah.j.smith@nokia.com>2011-03-30 19:55:51 +1000
committerSarah Smith <sarah.j.smith@nokia.com>2011-03-30 19:55:51 +1000
commit5f351919fdd698ff0ff1b94614f649facc083ee3 (patch)
treee4609df2bf11578a6865f1a4cf942c5667a169d9
parent7ca0562aa8f95b03444dccd37d734fe701c7265d (diff)
QTBUG-18447 - more fixing of examples.
They all now compile and run at least on MacOSX. There are some known issues and these have all been entered as bug reports. As far as I can tell all required resources are now being found and the apps are all deploying correctly. This still needs to be verified on the other platforms.
-rw-r--r--demos/quick3d/model_viewer/main.cpp5
-rw-r--r--demos/quick3d/model_viewer/model_viewer.pro22
-rw-r--r--demos/quick3d/model_viewer/qml/images/arrow.pngbin0 -> 1338 bytes
-rw-r--r--demos/quick3d/model_viewer/qml/images/arrow.svg74
-rw-r--r--demos/quick3d/model_viewer/qml/images/cog.svg127
-rw-r--r--demos/quick3d/model_viewer/qml/images/cog2.svg126
-rw-r--r--demos/quick3d/model_viewer/qml/images/knob.pngbin0 -> 1888 bytes
-rw-r--r--demos/quick3d/model_viewer/qml/images/knob.svg867
-rw-r--r--demos/quick3d/model_viewer/qml/images/test.svg136
-rw-r--r--demos/quick3d/model_viewer/qml/images/zoomin.pngbin0 -> 4970 bytes
-rw-r--r--demos/quick3d/model_viewer/qml/images/zoomin.svg74
-rw-r--r--demos/quick3d/model_viewer/qml/images/zoomout.pngbin0 -> 4798 bytes
-rw-r--r--demos/quick3d/model_viewer/qml/images/zoomout.svg169
-rw-r--r--demos/quick3d/model_viewer/qmlres.h (renamed from examples/quick3d/photopane/main.cpp)41
-rw-r--r--demos/quick3d/robo_bounce/main.cpp5
-rw-r--r--demos/quick3d/robo_bounce/qml/robobounce.qml10
-rw-r--r--demos/quick3d/robo_bounce/qmlres.h67
-rw-r--r--demos/quick3d/robo_bounce/robo_bounce.pro22
-rw-r--r--demos/quick3d/tea_service/main.cpp5
-rw-r--r--demos/quick3d/tea_service/qmlres.h67
-rw-r--r--demos/quick3d/tea_service/tea_service.pro22
-rw-r--r--examples/qt3d/basket/basket.pro2
-rw-r--r--examples/quick3d/basket/basket.pro22
-rw-r--r--examples/quick3d/basket/main.cpp6
-rw-r--r--examples/quick3d/basket/qml/basket.bez332
-rw-r--r--examples/quick3d/basket/qml/basket.jpgbin0 -> 454145 bytes
-rw-r--r--examples/quick3d/basket/qml/basket.qml4
-rw-r--r--examples/quick3d/basket/qmlres.h67
-rw-r--r--examples/quick3d/bounce/bounce.pro22
-rw-r--r--examples/quick3d/bounce/main.cpp6
-rw-r--r--examples/quick3d/bounce/qml/bounce.qml2
-rw-r--r--examples/quick3d/bounce/qml/teapot.bez340
-rw-r--r--examples/quick3d/bounce/qmlres.h67
-rw-r--r--examples/quick3d/cube/cube.pro22
-rw-r--r--examples/quick3d/cube/main.cpp5
-rw-r--r--examples/quick3d/cube/qml/cube.qml2
-rw-r--r--examples/quick3d/cube/qml/qtlogo.png (renamed from examples/quick3d/textures/qtlogo.png)bin13923 -> 13923 bytes
-rw-r--r--examples/quick3d/cube/qmlres.h67
-rw-r--r--examples/quick3d/dirs13
-rw-r--r--examples/quick3d/forest/forest.pro22
-rw-r--r--examples/quick3d/forest/main.cpp5
-rw-r--r--examples/quick3d/forest/qmlres.h67
-rw-r--r--examples/quick3d/lander/lander.pro23
-rw-r--r--examples/quick3d/lander/main.cpp5
-rw-r--r--examples/quick3d/lander/qmlres.h67
-rw-r--r--examples/quick3d/matrix_animation/main.cpp5
-rw-r--r--examples/quick3d/matrix_animation/matrix_animation.pro24
-rw-r--r--examples/quick3d/matrix_animation/qml/matrix-animation.qml4
-rw-r--r--examples/quick3d/matrix_animation/qml/qtlogo.pngbin0 -> 13923 bytes
-rw-r--r--examples/quick3d/matrix_animation/qml/teapot.bez340
-rw-r--r--examples/quick3d/matrix_animation/qmlres.h67
-rw-r--r--examples/quick3d/monkeygod/main.cpp5
-rw-r--r--examples/quick3d/monkeygod/monkeygod.pro24
-rw-r--r--examples/quick3d/monkeygod/qml/marble.pngbin0 -> 52383 bytes
-rw-r--r--examples/quick3d/monkeygod/qml/monkeygod.qml14
-rw-r--r--examples/quick3d/monkeygod/qml/monkeygod_no_platform.qml110
-rw-r--r--examples/quick3d/monkeygod/qmlres.h67
-rw-r--r--examples/quick3d/moon/main.cpp5
-rw-r--r--examples/quick3d/moon/moon.pro24
-rw-r--r--examples/quick3d/moon/qmlres.h67
-rw-r--r--examples/quick3d/photopane/photopane.pro11
-rw-r--r--examples/quick3d/photoroom/main.cpp5
-rw-r--r--examples/quick3d/photoroom/photoroom.pro22
-rw-r--r--examples/quick3d/photoroom/qml/PhotoPane.qml (renamed from examples/quick3d/photopane/qml/photopane.qml)2
-rw-r--r--examples/quick3d/photoroom/qml/photopane.obj11
-rw-r--r--examples/quick3d/photoroom/qml/photoroom.qml14
-rw-r--r--examples/quick3d/photoroom/qml/textures/background.jpg (renamed from examples/quick3d/textures/photos/background.jpg)bin159108 -> 159108 bytes
-rw-r--r--examples/quick3d/photoroom/qml/textures/basket.jpgbin0 -> 454145 bytes
-rw-r--r--examples/quick3d/photoroom/qml/textures/niagara_falls.jpg (renamed from examples/quick3d/textures/photos/niagara_falls.jpg)bin139646 -> 139646 bytes
-rw-r--r--examples/quick3d/photoroom/qml/textures/place.jpg (renamed from examples/quick3d/textures/photos/place.jpg)bin62438 -> 62438 bytes
-rw-r--r--examples/quick3d/photoroom/qml/textures/qtlogo.pngbin0 -> 13923 bytes
-rw-r--r--examples/quick3d/photoroom/qml/textures/woman-photo-credit.txt (renamed from examples/quick3d/textures/button/woman-photo-credit.txt)0
-rw-r--r--examples/quick3d/photoroom/qml/textures/woman.jpg (renamed from examples/quick3d/textures/button/woman.jpg)bin83973 -> 83973 bytes
-rw-r--r--examples/quick3d/photoroom/qmlres.h67
-rw-r--r--examples/quick3d/quick3d.pro1
-rw-r--r--examples/quick3d/shaders/main.cpp5
-rw-r--r--examples/quick3d/shaders/qml/Bouncing.qml (renamed from examples/quick3d/shaders/qml/Animation.qml)0
-rw-r--r--examples/quick3d/shaders/qml/shaders.qml32
-rw-r--r--examples/quick3d/shaders/qml/shaders.qmlproject18
-rw-r--r--examples/quick3d/shaders/qmlres.h67
-rw-r--r--examples/quick3d/shaders/shaders.pro22
-rw-r--r--examples/quick3d/sphere/main.cpp5
-rw-r--r--examples/quick3d/sphere/qmlres.h67
-rw-r--r--examples/quick3d/sphere/sphere.pro22
-rw-r--r--examples/quick3d/teapot/main.cpp5
-rw-r--r--examples/quick3d/teapot/qml/teapot.bez340
-rw-r--r--examples/quick3d/teapot/qml/teapot.qml2
-rw-r--r--examples/quick3d/teapot/qmlres.h67
-rw-r--r--examples/quick3d/teapot/teapot.pro24
-rw-r--r--examples/quick3d/textures/qmlres.h67
90 files changed, 4367 insertions, 272 deletions
diff --git a/demos/quick3d/model_viewer/main.cpp b/demos/quick3d/model_viewer/main.cpp
index 24873786..ff59d702 100644
--- a/demos/quick3d/model_viewer/main.cpp
+++ b/demos/quick3d/model_viewer/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/model_viewer.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/model_viewer.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/demos/quick3d/model_viewer/model_viewer.pro b/demos/quick3d/model_viewer/model_viewer.pro
index 20165338..cf11936f 100644
--- a/demos/quick3d/model_viewer/model_viewer.pro
+++ b/demos/quick3d/model_viewer/model_viewer.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = model_viewer
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$${TARGET}_resources/qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/demos/quick3d/model_viewer/qml/images/arrow.png b/demos/quick3d/model_viewer/qml/images/arrow.png
new file mode 100644
index 00000000..0ea53c17
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/arrow.png
Binary files differ
diff --git a/demos/quick3d/model_viewer/qml/images/arrow.svg b/demos/quick3d/model_viewer/qml/images/arrow.svg
new file mode 100644
index 00000000..6665e81d
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/arrow.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="arrow.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="36.315176"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1348"
+ inkscape:window-height="684"
+ inkscape:window-x="177"
+ inkscape:window-y="346"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <rect
+ style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="970.86469"
+ x="14.027932"
+ id="image4316"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAABACAYAAABfl/puAAAABHNCSVQICAgIfAhkiAAABMxJREFU eJzt3E9MI1UcB/DvvE63zBRIydRiCIfFg1E5cMAQEmLyAuUABAH/nMzqxWyiiXL1oKd116PJHoye PKmHNcsfkWAo8kw8woUEVAIMB08wBFYYbDvlPQ9QRISWTqfTfW2/pzm89+aXT3+vM520DUCyDAwM vNja2hra3t4+LFcNpFwndhNKaVhRlO/C4fAPlNLnylWHVGg4rddwHKcjHA5/Xy442dAAAN3d3cQw jBfKBSclWlNTE8bGxrRywUmJBvwP7hGl9Fm/zi0tGnAKNzIyomma9lJ9ff3nlNIGP84rNRoAGIaB oaGhukAg8Go4HP7CDzjp0QCgra0No6Ojuqqqr/kBVxFogL9wFYMG+AcnG1o9gDpd168d4AecbGjP cM71SCSSc1Cp4WRDu3FKCVexaEDp4CoaDSgNXMWjAf/CEUJeb2ho+IhSGihmvapAA07hent76xzH Gdc07cNi4KoGDQA6OjqUvr4+TQhxrxg4FQAopbcBNHpZYInyvBBCcTuZEILOzk4CQFtYWLinaRoo pQ8ZYyeFrKNSSm/ruv4r57zJbTE+hhBCQoeHh2hubna7QNFwKoBGznnT8PCwHo1GXRXiVyzLgmEY aG5uhhACiuKu6YqFU7MH0WjU9avnV2Kx2PmxW7BsioGrqgvB5WThCr04VDUa4A6u6tGAwuFqaGe5 DKfr+t1rx/pZ2NOeLFxPT48mhPg0Ho/Hrxznd2FPewgh6OrqIu3t7Q3BYPCbq+CkQ3McB0KIkp4j FAqhv78/2N7e3nQVnHRowWCw6Hu0myQXnHRofuY6uBpanoRCIcTj8aBhGJFAIPAZpTSs5p9W3eGc Y2VlJbmzs5PMZDJfAziudVqOcM6xtLSUTCQSyUwm8zHn/CvGmKh12jVxHAdLS0upxcXFLNiX2Q/z NbQrkkqlMD8/76ysrNiZTOaTsw47f/pRQ7uULNjq6uo+5/wO53yeMfafG8Ma2oVcBHMc561EIpG4 alztQnCWm4IBtU4DcAo2Nzf3ZG1t7fjk5OTtXGBADe0cbHV19TCdTr/DGPs535yq3p5uwADJOo1z DkK8eZ0PDg6QSCQO19fXCwIDLqBZluVJMaWMZVloaWlBvu+n5cv+/j4mJib+3tnZ+TOdTr/HGPul kPkqgL8URfljbm6uAUBpH1QVnwjn3BgfHye3bt1ytUAWbG9v7/dkMvkGY2yr0DVUxtg2pfQVSPD+ pmnau7quPxBC1LmZfxHMtm1XYMDZ9mSM2W4m+53BwcGk2weQXoEBEnSXF/ESDKgCNK/BAMluOQrN 3t4epqamPAUDKhjNNE3Mzs6mj4+Pf7Nt+02vwADJtichpFFVVZHvYmCaJqanpx3O+U+2bQ95CQZI 1mmKorwci8XUXPdoWbBAIDBrWdYdxpjnfxAgVacBCObqMj/AAPnQro1pmpiamkoSQn4sJRgg2fa8 LqZpYnJy8jiTyTw+ODh4v5RgQAV02kUw27ZLDgZI3Gmcc2xubmJmZsZXMEBSNM45lpeXwRhLKYry yLbtD/wCAyTcnkIILC8vY3FxMaVp2v2jo6O7foIBEnba1taWurGxkdJ1/b5lWQ8K/bWJF5Gq04QQ IpVKnZQTDJCs0zjnDyORyLe7u7uPywUGAP8AGpq/aU97o64AAAAASUVORK5CYII= "
+ height="64"
+ width="77"
+ style="opacity:0.75" />
+ </g>
+</svg>
diff --git a/demos/quick3d/model_viewer/qml/images/cog.svg b/demos/quick3d/model_viewer/qml/images/cog.svg
new file mode 100644
index 00000000..e8a993d3
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/cog.svg
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="cog.svg">
+ <defs
+ id="defs4">
+ <filter
+ id="filter6134"
+ inkscape:label="Jam spread"
+ inkscape:menu="Textures"
+ inkscape:menu-tooltip="Glossy clumpy jam spread"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ id="feGaussianBlur6136"
+ stdDeviation="1"
+ in="SourceGraphic"
+ result="result0" />
+ <feTurbulence
+ id="feTurbulence6138"
+ result="result1"
+ numOctaves="7"
+ seed="488"
+ baseFrequency="0.017"
+ type="turbulence" />
+ <feComposite
+ id="feComposite6140"
+ in2="result1"
+ in="result0"
+ operator="out"
+ result="result2" />
+ <feGaussianBlur
+ id="feGaussianBlur6142"
+ stdDeviation="0.5"
+ result="result5" />
+ <feSpecularLighting
+ id="feSpecularLighting6144"
+ in="result5"
+ specularExponent="100"
+ specularConstant="4"
+ result="result4"
+ surfaceScale="1.5">
+ <feDistantLight
+ id="feDistantLight6146"
+ azimuth="225"
+ elevation="62" />
+ </feSpecularLighting>
+ <feComposite
+ id="feComposite6148"
+ in2="result2"
+ operator="atop"
+ in="result4"
+ result="result91" />
+ <feBlend
+ id="feBlend6150"
+ in2="result91"
+ mode="multiply" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="-21.768595"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1118"
+ inkscape:window-height="684"
+ inkscape:window-x="243"
+ inkscape:window-y="161"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)"
+ style="opacity:0.75">
+ <rect
+ style="opacity:0.20000000000000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="955.81396"
+ x="2.9568648"
+ id="image4099"
+ xlink:href="data:image/png;base64,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 sc8FnQAAAABJRU5ErkJggg== "
+ height="84"
+ width="85"
+ style="opacity:0.75000000000000000;filter:url(#filter6134)" />
+ </g>
+</svg>
diff --git a/demos/quick3d/model_viewer/qml/images/cog2.svg b/demos/quick3d/model_viewer/qml/images/cog2.svg
new file mode 100644
index 00000000..21f25d95
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/cog2.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="cog.svg">
+ <defs
+ id="defs4">
+ <filter
+ id="filter6134"
+ inkscape:label="Jam spread"
+ inkscape:menu="Textures"
+ inkscape:menu-tooltip="Glossy clumpy jam spread"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ id="feGaussianBlur6136"
+ stdDeviation="1"
+ in="SourceGraphic"
+ result="result0" />
+ <feTurbulence
+ id="feTurbulence6138"
+ result="result1"
+ numOctaves="7"
+ seed="488"
+ baseFrequency="0.017"
+ type="turbulence" />
+ <feComposite
+ id="feComposite6140"
+ in2="result1"
+ in="result0"
+ operator="out"
+ result="result2" />
+ <feGaussianBlur
+ id="feGaussianBlur6142"
+ stdDeviation="0.5"
+ result="result5" />
+ <feSpecularLighting
+ id="feSpecularLighting6144"
+ in="result5"
+ specularExponent="100"
+ specularConstant="4"
+ result="result4"
+ surfaceScale="1.5">
+ <feDistantLight
+ id="feDistantLight6146"
+ azimuth="225"
+ elevation="62" />
+ </feSpecularLighting>
+ <feComposite
+ id="feComposite6148"
+ in2="result2"
+ operator="atop"
+ in="result4"
+ result="result91" />
+ <feBlend
+ id="feBlend6150"
+ in2="result91"
+ mode="multiply" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="36.315176"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1118"
+ inkscape:window-height="684"
+ inkscape:window-x="310"
+ inkscape:window-y="375"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <rect
+ style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="955.81396"
+ x="2.9568648"
+ id="image4099"
+ xlink:href="data:image/png;base64,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 sc8FnQAAAABJRU5ErkJggg== "
+ height="84"
+ width="85"
+ style="opacity:0.75000000000000000;filter:url(#filter6134)" />
+ </g>
+</svg>
diff --git a/demos/quick3d/model_viewer/qml/images/knob.png b/demos/quick3d/model_viewer/qml/images/knob.png
new file mode 100644
index 00000000..0d5d8f0e
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/knob.png
Binary files differ
diff --git a/demos/quick3d/model_viewer/qml/images/knob.svg b/demos/quick3d/model_viewer/qml/images/knob.svg
new file mode 100644
index 00000000..fb693371
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/knob.svg
@@ -0,0 +1,867 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ x="0px"
+ y="0px"
+ width="52px"
+ height="52px"
+ viewBox="0 0 52 52"
+ enable-background="new 0 0 52 52"
+ xml:space="preserve"
+ id="svg3883"
+ sodipodi:version="0.32"
+ inkscape:version="0.44.1"
+ sodipodi:docname="knob_on.svg"
+ sodipodi:docbase="/local/axel/embeddedwidgets/embeddedstories/skins/svgslideswitch/MetallicBrush"><metadata
+ id="metadata4200"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ inkscape:window-height="640"
+ inkscape:window-width="937"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="8.3653846"
+ inkscape:cx="26.000002"
+ inkscape:cy="26"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:current-layer="svg3883" />
+<defs
+ id="defs3885">
+</defs>
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-59.7866"
+ y1="-115.917"
+ x2="-93.2123"
+ y2="-76.0818"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#000000"
+ id="stop3888" />
+ <stop
+ offset="1"
+ style="stop-color:#EAECEF"
+ id="stop3890" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="26"
+ id="circle3892"
+ style="fill:url(#SVGID_1_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="26"
+ sodipodi:ry="26"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="-100.5"
+ y1="-96"
+ x2="-52.5"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop3895" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop3897" />
+ <stop
+ offset="0.6043"
+ style="stop-color:#E7EAED"
+ id="stop3899" />
+ <stop
+ offset="0.6751"
+ style="stop-color:#DEE4E7"
+ id="stop3901" />
+ <stop
+ offset="0.7358"
+ style="stop-color:#CFD9DD"
+ id="stop3903" />
+ <stop
+ offset="0.791"
+ style="stop-color:#B9CACF"
+ id="stop3905" />
+ <stop
+ offset="0.8425"
+ style="stop-color:#9EB6BD"
+ id="stop3907" />
+ <stop
+ offset="0.891"
+ style="stop-color:#7B9EA7"
+ id="stop3909" />
+ <stop
+ offset="0.9374"
+ style="stop-color:#53828C"
+ id="stop3911" />
+ <stop
+ offset="0.9809"
+ style="stop-color:#25626E"
+ id="stop3913" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop3915" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="24"
+ id="circle3917"
+ style="fill:url(#SVGID_2_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="24"
+ sodipodi:ry="24"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="-98.6328"
+ y1="-96"
+ x2="-54.3672"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop3920" />
+ <stop
+ offset="0.073"
+ style="stop-color:#8FAECB"
+ id="stop3922" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop3924" />
+ <stop
+ offset="0.5902"
+ style="stop-color:#E7E9ED"
+ id="stop3926" />
+ <stop
+ offset="0.618"
+ style="stop-color:#E4E7EB"
+ id="stop3928" />
+ <stop
+ offset="0.6697"
+ style="stop-color:#E0E4E9"
+ id="stop3930" />
+ <stop
+ offset="0.7211"
+ style="stop-color:#D4DCE1"
+ id="stop3932" />
+ <stop
+ offset="0.7722"
+ style="stop-color:#C0CFD5"
+ id="stop3934" />
+ <stop
+ offset="0.809"
+ style="stop-color:#ADC2C9"
+ id="stop3936" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop3938" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="22.132999"
+ id="circle3940"
+ style="fill:url(#SVGID_3_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="22.132999"
+ sodipodi:ry="22.132999"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="-96.7671"
+ y1="-96"
+ x2="-56.2324"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop3943" />
+ <stop
+ offset="0.073"
+ style="stop-color:#86A7C4"
+ id="stop3945" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop3947" />
+ <stop
+ offset="0.577"
+ style="stop-color:#E7EAED"
+ id="stop3949" />
+ <stop
+ offset="0.618"
+ style="stop-color:#E1E6EA"
+ id="stop3951" />
+ <stop
+ offset="0.6697"
+ style="stop-color:#DDE3E8"
+ id="stop3953" />
+ <stop
+ offset="0.7211"
+ style="stop-color:#D1DBE1"
+ id="stop3955" />
+ <stop
+ offset="0.7722"
+ style="stop-color:#BDCDD5"
+ id="stop3957" />
+ <stop
+ offset="0.809"
+ style="stop-color:#AAC0CA"
+ id="stop3959" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop3961" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="20.267"
+ id="circle3963"
+ style="fill:url(#SVGID_4_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="20.267"
+ sodipodi:ry="20.267"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="-94.8999"
+ y1="-96"
+ x2="-58.0996"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop3966" />
+ <stop
+ offset="0.073"
+ style="stop-color:#7E9FBC"
+ id="stop3968" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop3970" />
+ <stop
+ offset="0.5709"
+ style="stop-color:#E6E9ED"
+ id="stop3972" />
+ <stop
+ offset="0.618"
+ style="stop-color:#DFE4E9"
+ id="stop3974" />
+ <stop
+ offset="0.6687"
+ style="stop-color:#DBE1E7"
+ id="stop3976" />
+ <stop
+ offset="0.7193"
+ style="stop-color:#CFD9E0"
+ id="stop3978" />
+ <stop
+ offset="0.7695"
+ style="stop-color:#BBCCD6"
+ id="stop3980" />
+ <stop
+ offset="0.809"
+ style="stop-color:#A6BECA"
+ id="stop3982" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop3984" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="18.4"
+ id="circle3986"
+ style="fill:url(#SVGID_5_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="18.4"
+ sodipodi:ry="18.4"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_6_"
+ gradientUnits="userSpaceOnUse"
+ x1="-93.0332"
+ y1="-96"
+ x2="-59.9668"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop3989" />
+ <stop
+ offset="0.073"
+ style="stop-color:#7697B4"
+ id="stop3991" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop3993" />
+ <stop
+ offset="0.5636"
+ style="stop-color:#E6E9ED"
+ id="stop3995" />
+ <stop
+ offset="0.618"
+ style="stop-color:#DCE2E8"
+ id="stop3997" />
+ <stop
+ offset="0.6687"
+ style="stop-color:#D8DFE6"
+ id="stop3999" />
+ <stop
+ offset="0.7193"
+ style="stop-color:#CCD7E0"
+ id="stop4001" />
+ <stop
+ offset="0.7695"
+ style="stop-color:#B8CAD5"
+ id="stop4003" />
+ <stop
+ offset="0.809"
+ style="stop-color:#A3BCCA"
+ id="stop4005" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4007" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="16.533001"
+ id="circle4009"
+ style="fill:url(#SVGID_6_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="16.533001"
+ sodipodi:ry="16.533001"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_7_"
+ gradientUnits="userSpaceOnUse"
+ x1="-91.167"
+ y1="-96"
+ x2="-61.833"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4012" />
+ <stop
+ offset="0.073"
+ style="stop-color:#6D8FAD"
+ id="stop4014" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4016" />
+ <stop
+ offset="0.5605"
+ style="stop-color:#E5E8EC"
+ id="stop4018" />
+ <stop
+ offset="0.618"
+ style="stop-color:#DAE1E7"
+ id="stop4020" />
+ <stop
+ offset="0.6679"
+ style="stop-color:#D6DEE5"
+ id="stop4022" />
+ <stop
+ offset="0.7175"
+ style="stop-color:#CAD6DF"
+ id="stop4024" />
+ <stop
+ offset="0.7669"
+ style="stop-color:#B6C9D6"
+ id="stop4026" />
+ <stop
+ offset="0.809"
+ style="stop-color:#9FBACB"
+ id="stop4028" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4030" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="14.667"
+ id="circle4032"
+ style="fill:url(#SVGID_7_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="14.667"
+ sodipodi:ry="14.667"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_8_"
+ gradientUnits="userSpaceOnUse"
+ x1="-89.2998"
+ y1="-96"
+ x2="-63.7002"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4035" />
+ <stop
+ offset="0.073"
+ style="stop-color:#6587A5"
+ id="stop4037" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4039" />
+ <stop
+ offset="0.5588"
+ style="stop-color:#E4E8EC"
+ id="stop4041" />
+ <stop
+ offset="0.618"
+ style="stop-color:#D8DFE7"
+ id="stop4043" />
+ <stop
+ offset="0.6675"
+ style="stop-color:#D4DCE5"
+ id="stop4045" />
+ <stop
+ offset="0.7167"
+ style="stop-color:#C8D5E0"
+ id="stop4047" />
+ <stop
+ offset="0.7657"
+ style="stop-color:#B4C8D6"
+ id="stop4049" />
+ <stop
+ offset="0.809"
+ style="stop-color:#9CB8CB"
+ id="stop4051" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4053" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="12.8"
+ id="circle4055"
+ style="fill:url(#SVGID_8_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="12.8"
+ sodipodi:ry="12.8"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_9_"
+ gradientUnits="userSpaceOnUse"
+ x1="-87.4331"
+ y1="-96"
+ x2="-65.5664"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4058" />
+ <stop
+ offset="0.073"
+ style="stop-color:#5D809D"
+ id="stop4060" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4062" />
+ <stop
+ offset="0.5567"
+ style="stop-color:#E3E7EC"
+ id="stop4064" />
+ <stop
+ offset="0.618"
+ style="stop-color:#D5DDE6"
+ id="stop4066" />
+ <stop
+ offset="0.6671"
+ style="stop-color:#D1DAE4"
+ id="stop4068" />
+ <stop
+ offset="0.7159"
+ style="stop-color:#C5D3DF"
+ id="stop4070" />
+ <stop
+ offset="0.7645"
+ style="stop-color:#B1C6D6"
+ id="stop4072" />
+ <stop
+ offset="0.809"
+ style="stop-color:#98B5CB"
+ id="stop4074" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4076" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="10.933"
+ id="circle4078"
+ style="fill:url(#SVGID_9_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="10.933"
+ sodipodi:ry="10.933"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_10_"
+ gradientUnits="userSpaceOnUse"
+ x1="-85.5659"
+ y1="-96"
+ x2="-67.4336"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4081" />
+ <stop
+ offset="0.073"
+ style="stop-color:#547896"
+ id="stop4083" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4085" />
+ <stop
+ offset="0.5588"
+ style="stop-color:#E1E6EB"
+ id="stop4087" />
+ <stop
+ offset="0.618"
+ style="stop-color:#D3DCE5"
+ id="stop4089" />
+ <stop
+ offset="0.6663"
+ style="stop-color:#CFD9E3"
+ id="stop4091" />
+ <stop
+ offset="0.7143"
+ style="stop-color:#C3D2DF"
+ id="stop4093" />
+ <stop
+ offset="0.7621"
+ style="stop-color:#AFC5D7"
+ id="stop4095" />
+ <stop
+ offset="0.809"
+ style="stop-color:#94B3CC"
+ id="stop4097" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4099" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="9.066"
+ id="circle4101"
+ style="fill:url(#SVGID_10_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="9.066"
+ sodipodi:ry="9.066"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_11_"
+ gradientUnits="userSpaceOnUse"
+ x1="-83.7002"
+ y1="-96"
+ x2="-69.2998"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4104" />
+ <stop
+ offset="0.073"
+ style="stop-color:#4C708E"
+ id="stop4106" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4108" />
+ <stop
+ offset="0.5625"
+ style="stop-color:#DEE4EA"
+ id="stop4110" />
+ <stop
+ offset="0.618"
+ style="stop-color:#D0DAE4"
+ id="stop4112" />
+ <stop
+ offset="0.6663"
+ style="stop-color:#CCD7E2"
+ id="stop4114" />
+ <stop
+ offset="0.7143"
+ style="stop-color:#C0D0DE"
+ id="stop4116" />
+ <stop
+ offset="0.7621"
+ style="stop-color:#ACC3D6"
+ id="stop4118" />
+ <stop
+ offset="0.809"
+ style="stop-color:#91B1CC"
+ id="stop4120" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4122" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="7.1999998"
+ id="circle4124"
+ style="fill:url(#SVGID_11_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="7.1999998"
+ sodipodi:ry="7.1999998"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="-81.833"
+ y1="-96"
+ x2="-71.167"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4127" />
+ <stop
+ offset="0.073"
+ style="stop-color:#446986"
+ id="stop4129" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4131" />
+ <stop
+ offset="0.5757"
+ style="stop-color:#D9E0E8"
+ id="stop4133" />
+ <stop
+ offset="0.618"
+ style="stop-color:#CED8E3"
+ id="stop4135" />
+ <stop
+ offset="0.6655"
+ style="stop-color:#CAD5E2"
+ id="stop4137" />
+ <stop
+ offset="0.7129"
+ style="stop-color:#BECEDD"
+ id="stop4139" />
+ <stop
+ offset="0.7601"
+ style="stop-color:#AAC1D6"
+ id="stop4141" />
+ <stop
+ offset="0.807"
+ style="stop-color:#8EB0CC"
+ id="stop4143" />
+ <stop
+ offset="0.809"
+ style="stop-color:#8DAFCC"
+ id="stop4145" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4147" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="5.3330002"
+ id="circle4149"
+ style="fill:url(#SVGID_12_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="5.3330002"
+ sodipodi:ry="5.3330002"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_13_"
+ gradientUnits="userSpaceOnUse"
+ x1="-79.9658"
+ y1="-96"
+ x2="-73.0342"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4152" />
+ <stop
+ offset="0.073"
+ style="stop-color:#3B617F"
+ id="stop4154" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4156" />
+ <stop
+ offset="0.6087"
+ style="stop-color:#CED9E3"
+ id="stop4158" />
+ <stop
+ offset="0.618"
+ style="stop-color:#CBD7E2"
+ id="stop4160" />
+ <stop
+ offset="0.6655"
+ style="stop-color:#C7D4E1"
+ id="stop4162" />
+ <stop
+ offset="0.7129"
+ style="stop-color:#BBCDDD"
+ id="stop4164" />
+ <stop
+ offset="0.7601"
+ style="stop-color:#A7C0D6"
+ id="stop4166" />
+ <stop
+ offset="0.807"
+ style="stop-color:#8BAECD"
+ id="stop4168" />
+ <stop
+ offset="0.809"
+ style="stop-color:#8AADCD"
+ id="stop4170" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4172" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="3.4660001"
+ id="circle4174"
+ style="fill:url(#SVGID_13_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="3.4660001"
+ sodipodi:ry="3.4660001"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+ id="SVGID_14_"
+ gradientUnits="userSpaceOnUse"
+ x1="-78.1001"
+ y1="-96"
+ x2="-74.9004"
+ y2="-96"
+ gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#8AADCE"
+ id="stop4177" />
+ <stop
+ offset="0.073"
+ style="stop-color:#335977"
+ id="stop4179" />
+ <stop
+ offset="0.5"
+ style="stop-color:#EAECEF"
+ id="stop4181" />
+ <stop
+ offset="0.618"
+ style="stop-color:#C9D5E1"
+ id="stop4183" />
+ <stop
+ offset="0.6648"
+ style="stop-color:#C5D3E0"
+ id="stop4185" />
+ <stop
+ offset="0.7114"
+ style="stop-color:#B9CBDC"
+ id="stop4187" />
+ <stop
+ offset="0.758"
+ style="stop-color:#A5BFD6"
+ id="stop4189" />
+ <stop
+ offset="0.8042"
+ style="stop-color:#89ADCE"
+ id="stop4191" />
+ <stop
+ offset="0.809"
+ style="stop-color:#86ABCD"
+ id="stop4193" />
+ <stop
+ offset="1"
+ style="stop-color:#0E525F"
+ id="stop4195" />
+</linearGradient>
+<circle
+ cx="26"
+ cy="26"
+ r="1.6"
+ id="circle4197"
+ style="fill:url(#SVGID_14_)"
+ sodipodi:cx="26"
+ sodipodi:cy="26"
+ sodipodi:rx="1.6"
+ sodipodi:ry="1.6"
+ transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+</svg> \ No newline at end of file
diff --git a/demos/quick3d/model_viewer/qml/images/test.svg b/demos/quick3d/model_viewer/qml/images/test.svg
new file mode 100644
index 00000000..6d51cc9e
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/test.svg
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="test.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="114.34946"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1118"
+ inkscape:window-height="684"
+ inkscape:window-x="465"
+ inkscape:window-y="406"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <rect
+ style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="952.36218"
+ x="0.173319"
+ id="image3901"
+ xlink:href="data:image/png;base64,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
+RU5ErkJggg==
+"
+ height="100"
+ width="100" />
+ </g>
+</svg>
diff --git a/demos/quick3d/model_viewer/qml/images/zoomin.png b/demos/quick3d/model_viewer/qml/images/zoomin.png
new file mode 100644
index 00000000..b17cbe81
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/zoomin.png
Binary files differ
diff --git a/demos/quick3d/model_viewer/qml/images/zoomin.svg b/demos/quick3d/model_viewer/qml/images/zoomin.svg
new file mode 100644
index 00000000..d517e3e5
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/zoomin.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="zoomin.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="36.315176"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1118"
+ inkscape:window-height="684"
+ inkscape:window-x="465"
+ inkscape:window-y="406"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <rect
+ style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="957.90533"
+ x="7.5177755"
+ id="image4088"
+ xlink:href="data:image/png;base64,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 YII= "
+ height="98"
+ width="88"
+ style="opacity:0.75" />
+ </g>
+</svg>
diff --git a/demos/quick3d/model_viewer/qml/images/zoomout.png b/demos/quick3d/model_viewer/qml/images/zoomout.png
new file mode 100644
index 00000000..01ed6f25
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/zoomout.png
Binary files differ
diff --git a/demos/quick3d/model_viewer/qml/images/zoomout.svg b/demos/quick3d/model_viewer/qml/images/zoomout.svg
new file mode 100644
index 00000000..ab722c1b
--- /dev/null
+++ b/demos/quick3d/model_viewer/qml/images/zoomout.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47+devel r9541"
+ sodipodi:docname="zoomout.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="114.34946"
+ inkscape:cy="49.177003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1118"
+ inkscape:window-height="684"
+ inkscape:window-x="465"
+ inkscape:window-y="406"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <rect
+ style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect2993"
+ width="100"
+ height="100"
+ x="0.16797371"
+ y="952.60327"
+ rx="15"
+ ry="15" />
+ <image
+ y="962.42053"
+ x="-2.5685232"
+ id="image4305"
+ xlink:href="data:image/png;base64,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
+kIVqMoUAAAAASUVORK5CYII=
+"
+ height="92"
+ width="91"
+ style="opacity:0.75" />
+ </g>
+</svg>
diff --git a/examples/quick3d/photopane/main.cpp b/demos/quick3d/model_viewer/qmlres.h
index a86fab38..a027c35e 100644
--- a/examples/quick3d/photopane/main.cpp
+++ b/demos/quick3d/model_viewer/qmlres.h
@@ -1,10 +1,10 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
+** This file is part of the Qt3D module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,22 +39,29 @@
**
****************************************************************************/
-#include <QtGui/QApplication>
-#include <QtDeclarative/qdeclarativeview.h>
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
-
- QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/photopane.qml")));
+#ifndef QMLRES_H
+#define QMLRES_H
- if (QApplication::arguments().contains(QLatin1String("-maximize")))
- view.showMaximized();
- else if (QApplication::arguments().contains(QLatin1String("-fullscreen")))
- view.showFullScreen();
- else
- view.show();
+#include <QtCore/qdir.h>
- return app.exec();
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
}
+
+#endif // QMLRES_H
diff --git a/demos/quick3d/robo_bounce/main.cpp b/demos/quick3d/robo_bounce/main.cpp
index b93f654c..16a0e889 100644
--- a/demos/quick3d/robo_bounce/main.cpp
+++ b/demos/quick3d/robo_bounce/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/robobounce.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/robobounce.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/demos/quick3d/robo_bounce/qml/robobounce.qml b/demos/quick3d/robo_bounce/qml/robobounce.qml
index a5b87111..28e79ebd 100644
--- a/demos/quick3d/robo_bounce/qml/robobounce.qml
+++ b/demos/quick3d/robo_bounce/qml/robobounce.qml
@@ -157,15 +157,10 @@ Image {
}
}
- StereoView {
- id: stereo
- width: 640; height: 480
- //layout: StereoView.LeftRight
-
Viewport {
id: viewport
- width: parent.width
- height: parent.height
+ width: 640
+ height: 480
navigation: true
picking: true
//showPicking: true
@@ -612,5 +607,4 @@ Image {
}
}
}
- }
}
diff --git a/demos/quick3d/robo_bounce/qmlres.h b/demos/quick3d/robo_bounce/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/demos/quick3d/robo_bounce/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/demos/quick3d/robo_bounce/robo_bounce.pro b/demos/quick3d/robo_bounce/robo_bounce.pro
index 356d3c40..17843fa7 100644
--- a/demos/quick3d/robo_bounce/robo_bounce.pro
+++ b/demos/quick3d/robo_bounce/robo_bounce.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = robo_bounce
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$${TARGET}_resources/qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/demos/quick3d/tea_service/main.cpp b/demos/quick3d/tea_service/main.cpp
index 2c2913f2..8695e3f5 100644
--- a/demos/quick3d/tea_service/main.cpp
+++ b/demos/quick3d/tea_service/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/teaservice.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/teaservice.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/demos/quick3d/tea_service/qmlres.h b/demos/quick3d/tea_service/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/demos/quick3d/tea_service/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/demos/quick3d/tea_service/tea_service.pro b/demos/quick3d/tea_service/tea_service.pro
index 28a52a7d..13238a45 100644
--- a/demos/quick3d/tea_service/tea_service.pro
+++ b/demos/quick3d/tea_service/tea_service.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = tea_service
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$${TARGET}_resources/qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/qt3d/basket/basket.pro b/examples/qt3d/basket/basket.pro
index 8c24581b..1b0404a7 100644
--- a/examples/qt3d/basket/basket.pro
+++ b/examples/qt3d/basket/basket.pro
@@ -4,4 +4,4 @@ CONFIG += qt warn_on qt3d
SOURCES = basketview.cpp main.cpp
HEADERS = basketview.h basket_data.h
RESOURCES = basket.qrc
-DESTDIR = ../../bin
+DESTDIR = ../../../bin
diff --git a/examples/quick3d/basket/basket.pro b/examples/quick3d/basket/basket.pro
index c45709fb..e391666e 100644
--- a/examples/quick3d/basket/basket.pro
+++ b/examples/quick3d/basket/basket.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = basket_qml
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$${TARGET}_resources/qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/basket/main.cpp b/examples/quick3d/basket/main.cpp
index 33093a98..51aa6874 100644
--- a/examples/quick3d/basket/main.cpp
+++ b/examples/quick3d/basket/main.cpp
@@ -41,13 +41,17 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include <QtCore/qdir.h>
+
+#include "qmlres.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/basket.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/basket.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/basket/qml/basket.bez b/examples/quick3d/basket/qml/basket.bez
new file mode 100644
index 00000000..614daf09
--- /dev/null
+++ b/examples/quick3d/basket/qml/basket.bez
@@ -0,0 +1,332 @@
+24
+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+4,17,18,19,8,20,21,22,12,23,24,25,16,26,27,28
+19,29,30,31,22,32,33,34,25,35,36,37,28,38,39,40
+31,41,42,1,34,43,44,5,37,45,46,9,40,47,48,13
+13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60
+16,26,27,28,52,61,62,63,56,64,65,66,60,67,68,69
+28,38,39,40,63,70,71,72,66,73,74,75,69,76,77,78
+40,47,48,13,72,79,80,49,75,81,82,53,78,83,84,57
+57,58,59,60,85,86,87,88,89,90,91,92,93,94,95,96
+60,67,68,69,88,97,98,99,92,100,101,102,96,103,104,105
+69,76,77,78,99,106,107,108,102,109,110,111,105,112,113,114
+78,83,84,57,108,115,116,85,111,117,118,89,114,119,120,93
+204,204,204,204,207,208,209,210,211,211,211,211,212,213,214,215,4
+204,204,204,204,210,217,218,219,211,211,211,211,215,220,221,222,4
+204,204,204,204,219,224,225,226,211,211,211,211,222,227,228,229,4
+204,204,204,204,226,230,231,207,211,211,211,211,229,232,233,212,4
+212,213,214,215,234,235,236,237,238,239,240,241,242,243,244,245
+215,220,221,222,237,246,247,248,241,249,250,251,245,252,253,254
+222,227,228,229,248,255,256,257,251,258,259,260,254,261,262,263
+229,232,233,212,257,264,265,234,260,266,267,238,263,268,269,242
+270,270,270,270,279,280,281,282,275,276,277,278,271,272,273,274,4
+270,270,270,270,282,289,290,291,278,286,287,288,274,283,284,285,4
+270,270,270,270,291,298,299,300,288,295,296,297,285,292,293,294,4
+270,270,270,270,300,305,306,279,297,303,304,275,294,301,302,271,4
+306
+0.700000,0.450000,-0.000000
+0.700000,0.450000,0.392000
+0.392000,0.450000,0.700000
+0.000000,0.450000,0.700000
+0.668750,0.515625,-0.000000
+0.668750,0.515625,0.374500
+0.374500,0.515625,0.668750
+0.000000,0.515625,0.668750
+0.718750,0.515625,-0.000000
+0.718750,0.515625,0.402500
+0.402500,0.515625,0.718750
+0.000000,0.515625,0.718750
+0.750000,0.450000,-0.000000
+0.750000,0.450000,0.420000
+0.420000,0.450000,0.750000
+0.000000,0.450000,0.750000
+-0.392000,0.450000,0.700000
+-0.700000,0.450000,0.392000
+-0.700000,0.450000,-0.000000
+-0.374500,0.515625,0.668750
+-0.668750,0.515625,0.374500
+-0.668750,0.515625,-0.000000
+-0.402500,0.515625,0.718750
+-0.718750,0.515625,0.402500
+-0.718750,0.515625,-0.000000
+-0.420000,0.450000,0.750000
+-0.750000,0.450000,0.420000
+-0.750000,0.450000,-0.000000
+-0.700000,0.450000,-0.392000
+-0.392000,0.450000,-0.700000
+0.000000,0.450000,-0.700000
+-0.668750,0.515625,-0.374500
+-0.374500,0.515625,-0.668750
+0.000000,0.515625,-0.668750
+-0.718750,0.515625,-0.402500
+-0.402500,0.515625,-0.718750
+0.000000,0.515625,-0.718750
+-0.750000,0.450000,-0.420000
+-0.420000,0.450000,-0.750000
+0.000000,0.450000,-0.750000
+0.392000,0.450000,-0.700000
+0.700000,0.450000,-0.392000
+0.374500,0.515625,-0.668750
+0.668750,0.515625,-0.374500
+0.402500,0.515625,-0.718750
+0.718750,0.515625,-0.402500
+0.420000,0.450000,-0.750000
+0.750000,0.450000,-0.420000
+0.875000,0.187500,-0.000000
+0.875000,0.187500,0.490000
+0.490000,0.187500,0.875000
+0.000000,0.187500,0.875000
+1.000000,-0.075000,-0.000000
+1.000000,-0.075000,0.560000
+0.560000,-0.075000,1.000000
+0.000000,-0.075000,1.000000
+1.000000,-0.300000,-0.000000
+1.000000,-0.300000,0.560000
+0.560000,-0.300000,1.000000
+0.000000,-0.300000,1.000000
+-0.490000,0.187500,0.875000
+-0.875000,0.187500,0.490000
+-0.875000,0.187500,-0.000000
+-0.560000,-0.075000,1.000000
+-1.000000,-0.075000,0.560000
+-1.000000,-0.075000,-0.000000
+-0.560000,-0.300000,1.000000
+-1.000000,-0.300000,0.560000
+-1.000000,-0.300000,-0.000000
+-0.875000,0.187500,-0.490000
+-0.490000,0.187500,-0.875000
+0.000000,0.187500,-0.875000
+-1.000000,-0.075000,-0.560000
+-0.560000,-0.075000,-1.000000
+0.000000,-0.075000,-1.000000
+-1.000000,-0.300000,-0.560000
+-0.560000,-0.300000,-1.000000
+0.000000,-0.300000,-1.000000
+0.490000,0.187500,-0.875000
+0.875000,0.187500,-0.490000
+0.560000,-0.075000,-1.000000
+1.000000,-0.075000,-0.560000
+0.560000,-0.300000,-1.000000
+1.000000,-0.300000,-0.560000
+1.000000,-0.525000,-0.000000
+1.000000,-0.525000,0.560000
+0.560000,-0.525000,1.000000
+0.000000,-0.525000,1.000000
+0.750000,-0.637500,-0.000000
+0.750000,-0.637500,0.420000
+0.420000,-0.637500,0.750000
+0.000000,-0.637500,0.750000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,0.420000
+0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.560000,-0.525000,1.000000
+-1.000000,-0.525000,0.560000
+-1.000000,-0.525000,-0.000000
+-0.420000,-0.637500,0.750000
+-0.750000,-0.637500,0.420000
+-0.750000,-0.637500,-0.000000
+-0.420000,-0.675000,0.750000
+-0.750000,-0.675000,0.420000
+-0.750000,-0.675000,-0.000000
+-1.000000,-0.525000,-0.560000
+-0.560000,-0.525000,-1.000000
+0.000000,-0.525000,-1.000000
+-0.750000,-0.637500,-0.420000
+-0.420000,-0.637500,-0.750000
+0.000000,-0.637500,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.560000,-0.525000,-1.000000
+1.000000,-0.525000,-0.560000
+0.420000,-0.637500,-0.750000
+0.750000,-0.637500,-0.420000
+0.420000,-0.675000,-0.750000
+0.750000,-0.675000,-0.420000
+-0.800000,0.262500,-0.000000
+-0.800000,0.262500,0.150000
+-0.750000,0.375000,0.150000
+-0.750000,0.375000,-0.000000
+-1.150000,0.262500,-0.000000
+-1.150000,0.262500,0.150000
+-1.250000,0.375000,0.150000
+-1.250000,0.375000,-0.000000
+-1.350000,0.262500,-0.000000
+-1.350000,0.262500,0.150000
+-1.500000,0.375000,0.150000
+-1.500000,0.375000,-0.000000
+-1.350000,0.150000,-0.000000
+-1.350000,0.150000,0.150000
+-1.500000,0.150000,0.150000
+-1.500000,0.150000,-0.000000
+-0.750000,0.375000,-0.150000
+-0.800000,0.262500,-0.150000
+-1.250000,0.375000,-0.150000
+-1.150000,0.262500,-0.150000
+-1.500000,0.375000,-0.150000
+-1.350000,0.262500,-0.150000
+-1.500000,0.150000,-0.150000
+-1.350000,0.150000,-0.150000
+-1.350000,0.037500,-0.000000
+-1.350000,0.037500,0.150000
+-1.500000,-0.075000,0.150000
+-1.500000,-0.075000,-0.000000
+-1.250000,-0.187500,-0.000000
+-1.250000,-0.187500,0.150000
+-1.325000,-0.281250,0.150000
+-1.325000,-0.281250,-0.000000
+-1.000000,-0.300000,0.150000
+-0.950000,-0.450000,0.150000
+-0.950000,-0.450000,-0.000000
+-1.500000,-0.075000,-0.150000
+-1.350000,0.037500,-0.150000
+-1.325000,-0.281250,-0.150000
+-1.250000,-0.187500,-0.150000
+-0.950000,-0.450000,-0.150000
+-1.000000,-0.300000,-0.150000
+0.850000,-0.037500,-0.000000
+0.850000,-0.037500,0.330000
+0.850000,-0.450000,0.330000
+0.850000,-0.450000,-0.000000
+1.300000,-0.037500,-0.000000
+1.300000,-0.037500,0.330000
+1.550000,-0.337500,0.330000
+1.550000,-0.337500,-0.000000
+1.150000,0.300000,-0.000000
+1.150000,0.300000,0.125000
+1.200000,0.262500,0.125000
+1.200000,0.262500,-0.000000
+1.350000,0.450000,-0.000000
+1.350000,0.450000,0.125000
+1.650000,0.450000,0.125000
+1.650000,0.450000,-0.000000
+0.850000,-0.450000,-0.330000
+0.850000,-0.037500,-0.330000
+1.550000,-0.337500,-0.330000
+1.300000,-0.037500,-0.330000
+1.200000,0.262500,-0.125000
+1.150000,0.300000,-0.125000
+1.650000,0.450000,-0.125000
+1.350000,0.450000,-0.125000
+1.400000,0.487500,-0.000000
+1.400000,0.487500,0.125000
+1.762500,0.496875,0.125000
+1.762500,0.496875,-0.000000
+1.450000,0.487500,-0.000000
+1.450000,0.487500,0.075000
+1.725000,0.506250,0.075000
+1.725000,0.506250,-0.000000
+1.400000,0.450000,-0.000000
+1.400000,0.450000,0.075000
+1.600000,0.450000,0.075000
+1.600000,0.450000,-0.000000
+1.762500,0.496875,-0.125000
+1.400000,0.487500,-0.125000
+1.725000,0.506250,-0.075000
+1.450000,0.487500,-0.075000
+1.600000,0.450000,-0.075000
+1.400000,0.450000,-0.075000
+0.000000,0.825000,-0.000000
+0.000000,0.825000,0.001000
+0.001000,0.825000,-0.000000
+0.400000,0.825000,-0.000000
+0.400000,0.825000,0.225000
+0.225000,0.825000,0.400000
+0.000000,0.825000,0.400000
+0.000000,0.675000,-0.000000
+0.100000,0.600000,-0.000000
+0.100000,0.600000,0.056000
+0.056000,0.600000,0.100000
+0.000000,0.600000,0.100000
+-0.001000,0.825000,-0.000000
+-0.225000,0.825000,0.400000
+-0.400000,0.825000,0.225000
+-0.400000,0.825000,-0.000000
+-0.056000,0.600000,0.100000
+-0.100000,0.600000,0.056000
+-0.100000,0.600000,-0.000000
+0.000000,0.825000,-0.001000
+-0.400000,0.825000,-0.225000
+-0.225000,0.825000,-0.400000
+0.000000,0.825000,-0.400000
+-0.100000,0.600000,-0.056000
+-0.056000,0.600000,-0.100000
+0.000000,0.600000,-0.100000
+0.225000,0.825000,-0.400000
+0.400000,0.825000,-0.225000
+0.056000,0.600000,-0.100000
+0.100000,0.600000,-0.056000
+0.200000,0.525000,-0.000000
+0.200000,0.525000,0.112000
+0.112000,0.525000,0.200000
+0.000000,0.525000,0.200000
+0.650000,0.525000,-0.000000
+0.650000,0.525000,0.364000
+0.364000,0.525000,0.650000
+0.000000,0.525000,0.650000
+0.650000,0.450000,-0.000000
+0.650000,0.450000,0.364000
+0.364000,0.450000,0.650000
+0.000000,0.450000,0.650000
+-0.112000,0.525000,0.200000
+-0.200000,0.525000,0.112000
+-0.200000,0.525000,-0.000000
+-0.364000,0.525000,0.650000
+-0.650000,0.525000,0.364000
+-0.650000,0.525000,-0.000000
+-0.364000,0.450000,0.650000
+-0.650000,0.450000,0.364000
+-0.650000,0.450000,-0.000000
+-0.200000,0.525000,-0.112000
+-0.112000,0.525000,-0.200000
+0.000000,0.525000,-0.200000
+-0.650000,0.525000,-0.364000
+-0.364000,0.525000,-0.650000
+0.000000,0.525000,-0.650000
+-0.650000,0.450000,-0.364000
+-0.364000,0.450000,-0.650000
+0.000000,0.450000,-0.650000
+0.112000,0.525000,-0.200000
+0.200000,0.525000,-0.112000
+0.364000,0.525000,-0.650000
+0.650000,0.525000,-0.364000
+0.364000,0.450000,-0.650000
+0.650000,0.450000,-0.364000
+0.000000,-0.750000,-0.000000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,-0.420000
+0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.750000,-0.712500,-0.000000
+0.750000,-0.712500,-0.420000
+0.420000,-0.712500,-0.750000
+0.000000,-0.712500,-0.750000
+0.712500,-0.750000,-0.000000
+0.712500,-0.750000,-0.399000
+0.399000,-0.750000,-0.712500
+0.000000,-0.750000,-0.712500
+-0.420000,-0.675000,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.750000,-0.675000,-0.000000
+-0.420000,-0.712500,-0.750000
+-0.750000,-0.712500,-0.420000
+-0.750000,-0.712500,-0.000000
+-0.399000,-0.750000,-0.712500
+-0.712500,-0.750000,-0.399000
+-0.712500,-0.750000,-0.000000
+-0.750000,-0.675000,0.420000
+-0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.750000,-0.712500,0.420000
+-0.420000,-0.712500,0.750000
+0.000000,-0.712500,0.750000
+-0.712500,-0.750000,0.399000
+-0.399000,-0.750000,0.712500
+0.000000,-0.750000,0.712500
+0.420000,-0.675000,0.750000
+0.750000,-0.675000,0.420000
+0.420000,-0.712500,0.750000
+0.750000,-0.712500,0.420000
+0.399000,-0.750000,0.712500
+0.712500,-0.750000,0.399000
diff --git a/examples/quick3d/basket/qml/basket.jpg b/examples/quick3d/basket/qml/basket.jpg
new file mode 100644
index 00000000..438e7a0c
--- /dev/null
+++ b/examples/quick3d/basket/qml/basket.jpg
Binary files differ
diff --git a/examples/quick3d/basket/qml/basket.qml b/examples/quick3d/basket/qml/basket.qml
index 910cc146..acaf1973 100644
--- a/examples/quick3d/basket/qml/basket.qml
+++ b/examples/quick3d/basket/qml/basket.qml
@@ -52,8 +52,8 @@ Viewport {
//! [2]
Item3D {
- mesh: Mesh { source: "meshes/basket.bez" }
- effect: Effect { texture: "textures/basket.jpg" }
+ mesh: Mesh { source: "basket.bez" }
+ effect: Effect { texture: "basket.jpg" }
//! [2]
//! [3]
transform: [
diff --git a/examples/quick3d/basket/qmlres.h b/examples/quick3d/basket/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/basket/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/bounce/bounce.pro b/examples/quick3d/bounce/bounce.pro
index 2acbea88..719a9bf0 100644
--- a/examples/quick3d/bounce/bounce.pro
+++ b/examples/quick3d/bounce/bounce.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = bounce
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/bounce/main.cpp b/examples/quick3d/bounce/main.cpp
index c9fd2f1b..5aa4edc0 100644
--- a/examples/quick3d/bounce/main.cpp
+++ b/examples/quick3d/bounce/main.cpp
@@ -41,13 +41,17 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include <QtCore/qdir.h>
+
+#include "qmlres.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/bounce.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/bounce.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/bounce/qml/bounce.qml b/examples/quick3d/bounce/qml/bounce.qml
index 7abfe76d..c33ecc41 100644
--- a/examples/quick3d/bounce/qml/bounce.qml
+++ b/examples/quick3d/bounce/qml/bounce.qml
@@ -46,7 +46,7 @@ Viewport {
Item3D {
id: teapot
- mesh: Mesh { source: "meshes/teapot.bez" }
+ mesh: Mesh { source: "teapot.bez" }
effect: Effect {
material: china
}
diff --git a/examples/quick3d/bounce/qml/teapot.bez b/examples/quick3d/bounce/qml/teapot.bez
new file mode 100644
index 00000000..02b2ac44
--- /dev/null
+++ b/examples/quick3d/bounce/qml/teapot.bez
@@ -0,0 +1,340 @@
+32
+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+4,17,18,19,8,20,21,22,12,23,24,25,16,26,27,28
+19,29,30,31,22,32,33,34,25,35,36,37,28,38,39,40
+31,41,42,1,34,43,44,5,37,45,46,9,40,47,48,13
+13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60
+16,26,27,28,52,61,62,63,56,64,65,66,60,67,68,69
+28,38,39,40,63,70,71,72,66,73,74,75,69,76,77,78
+40,47,48,13,72,79,80,49,75,81,82,53,78,83,84,57
+57,58,59,60,85,86,87,88,89,90,91,92,93,94,95,96
+60,67,68,69,88,97,98,99,92,100,101,102,96,103,104,105
+69,76,77,78,99,106,107,108,102,109,110,111,105,112,113,114
+78,83,84,57,108,115,116,85,111,117,118,89,114,119,120,93
+121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136
+124,137,138,121,128,139,140,125,132,141,142,129,136,143,144,133
+133,134,135,136,145,146,147,148,149,150,151,152,69,153,154,155
+136,143,144,133,148,156,157,145,152,158,159,149,155,160,161,69
+162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177
+165,178,179,162,169,180,181,166,173,182,183,170,177,184,185,174
+174,175,176,177,186,187,188,189,190,191,192,193,194,195,196,197
+177,184,185,174,189,198,199,186,193,200,201,190,197,202,203,194
+204,204,204,204,207,208,209,210,211,211,211,211,212,213,214,215,4
+204,204,204,204,210,217,218,219,211,211,211,211,215,220,221,222,4
+204,204,204,204,219,224,225,226,211,211,211,211,222,227,228,229,4
+204,204,204,204,226,230,231,207,211,211,211,211,229,232,233,212,4
+212,213,214,215,234,235,236,237,238,239,240,241,242,243,244,245
+215,220,221,222,237,246,247,248,241,249,250,251,245,252,253,254
+222,227,228,229,248,255,256,257,251,258,259,260,254,261,262,263
+229,232,233,212,257,264,265,234,260,266,267,238,263,268,269,242
+270,270,270,270,279,280,281,282,275,276,277,278,271,272,273,274,4
+270,270,270,270,282,289,290,291,278,286,287,288,274,283,284,285,4
+270,270,270,270,291,298,299,300,288,295,296,297,285,292,293,294,4
+270,270,270,270,300,305,306,279,297,303,304,275,294,301,302,271,4
+306
+0.700000,0.450000,-0.000000
+0.700000,0.450000,0.392000
+0.392000,0.450000,0.700000
+0.000000,0.450000,0.700000
+0.668750,0.515625,-0.000000
+0.668750,0.515625,0.374500
+0.374500,0.515625,0.668750
+0.000000,0.515625,0.668750
+0.718750,0.515625,-0.000000
+0.718750,0.515625,0.402500
+0.402500,0.515625,0.718750
+0.000000,0.515625,0.718750
+0.750000,0.450000,-0.000000
+0.750000,0.450000,0.420000
+0.420000,0.450000,0.750000
+0.000000,0.450000,0.750000
+-0.392000,0.450000,0.700000
+-0.700000,0.450000,0.392000
+-0.700000,0.450000,-0.000000
+-0.374500,0.515625,0.668750
+-0.668750,0.515625,0.374500
+-0.668750,0.515625,-0.000000
+-0.402500,0.515625,0.718750
+-0.718750,0.515625,0.402500
+-0.718750,0.515625,-0.000000
+-0.420000,0.450000,0.750000
+-0.750000,0.450000,0.420000
+-0.750000,0.450000,-0.000000
+-0.700000,0.450000,-0.392000
+-0.392000,0.450000,-0.700000
+0.000000,0.450000,-0.700000
+-0.668750,0.515625,-0.374500
+-0.374500,0.515625,-0.668750
+0.000000,0.515625,-0.668750
+-0.718750,0.515625,-0.402500
+-0.402500,0.515625,-0.718750
+0.000000,0.515625,-0.718750
+-0.750000,0.450000,-0.420000
+-0.420000,0.450000,-0.750000
+0.000000,0.450000,-0.750000
+0.392000,0.450000,-0.700000
+0.700000,0.450000,-0.392000
+0.374500,0.515625,-0.668750
+0.668750,0.515625,-0.374500
+0.402500,0.515625,-0.718750
+0.718750,0.515625,-0.402500
+0.420000,0.450000,-0.750000
+0.750000,0.450000,-0.420000
+0.875000,0.187500,-0.000000
+0.875000,0.187500,0.490000
+0.490000,0.187500,0.875000
+0.000000,0.187500,0.875000
+1.000000,-0.075000,-0.000000
+1.000000,-0.075000,0.560000
+0.560000,-0.075000,1.000000
+0.000000,-0.075000,1.000000
+1.000000,-0.300000,-0.000000
+1.000000,-0.300000,0.560000
+0.560000,-0.300000,1.000000
+0.000000,-0.300000,1.000000
+-0.490000,0.187500,0.875000
+-0.875000,0.187500,0.490000
+-0.875000,0.187500,-0.000000
+-0.560000,-0.075000,1.000000
+-1.000000,-0.075000,0.560000
+-1.000000,-0.075000,-0.000000
+-0.560000,-0.300000,1.000000
+-1.000000,-0.300000,0.560000
+-1.000000,-0.300000,-0.000000
+-0.875000,0.187500,-0.490000
+-0.490000,0.187500,-0.875000
+0.000000,0.187500,-0.875000
+-1.000000,-0.075000,-0.560000
+-0.560000,-0.075000,-1.000000
+0.000000,-0.075000,-1.000000
+-1.000000,-0.300000,-0.560000
+-0.560000,-0.300000,-1.000000
+0.000000,-0.300000,-1.000000
+0.490000,0.187500,-0.875000
+0.875000,0.187500,-0.490000
+0.560000,-0.075000,-1.000000
+1.000000,-0.075000,-0.560000
+0.560000,-0.300000,-1.000000
+1.000000,-0.300000,-0.560000
+1.000000,-0.525000,-0.000000
+1.000000,-0.525000,0.560000
+0.560000,-0.525000,1.000000
+0.000000,-0.525000,1.000000
+0.750000,-0.637500,-0.000000
+0.750000,-0.637500,0.420000
+0.420000,-0.637500,0.750000
+0.000000,-0.637500,0.750000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,0.420000
+0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.560000,-0.525000,1.000000
+-1.000000,-0.525000,0.560000
+-1.000000,-0.525000,-0.000000
+-0.420000,-0.637500,0.750000
+-0.750000,-0.637500,0.420000
+-0.750000,-0.637500,-0.000000
+-0.420000,-0.675000,0.750000
+-0.750000,-0.675000,0.420000
+-0.750000,-0.675000,-0.000000
+-1.000000,-0.525000,-0.560000
+-0.560000,-0.525000,-1.000000
+0.000000,-0.525000,-1.000000
+-0.750000,-0.637500,-0.420000
+-0.420000,-0.637500,-0.750000
+0.000000,-0.637500,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.560000,-0.525000,-1.000000
+1.000000,-0.525000,-0.560000
+0.420000,-0.637500,-0.750000
+0.750000,-0.637500,-0.420000
+0.420000,-0.675000,-0.750000
+0.750000,-0.675000,-0.420000
+-0.800000,0.262500,-0.000000
+-0.800000,0.262500,0.150000
+-0.750000,0.375000,0.150000
+-0.750000,0.375000,-0.000000
+-1.150000,0.262500,-0.000000
+-1.150000,0.262500,0.150000
+-1.250000,0.375000,0.150000
+-1.250000,0.375000,-0.000000
+-1.350000,0.262500,-0.000000
+-1.350000,0.262500,0.150000
+-1.500000,0.375000,0.150000
+-1.500000,0.375000,-0.000000
+-1.350000,0.150000,-0.000000
+-1.350000,0.150000,0.150000
+-1.500000,0.150000,0.150000
+-1.500000,0.150000,-0.000000
+-0.750000,0.375000,-0.150000
+-0.800000,0.262500,-0.150000
+-1.250000,0.375000,-0.150000
+-1.150000,0.262500,-0.150000
+-1.500000,0.375000,-0.150000
+-1.350000,0.262500,-0.150000
+-1.500000,0.150000,-0.150000
+-1.350000,0.150000,-0.150000
+-1.350000,0.037500,-0.000000
+-1.350000,0.037500,0.150000
+-1.500000,-0.075000,0.150000
+-1.500000,-0.075000,-0.000000
+-1.250000,-0.187500,-0.000000
+-1.250000,-0.187500,0.150000
+-1.325000,-0.281250,0.150000
+-1.325000,-0.281250,-0.000000
+-1.000000,-0.300000,0.150000
+-0.950000,-0.450000,0.150000
+-0.950000,-0.450000,-0.000000
+-1.500000,-0.075000,-0.150000
+-1.350000,0.037500,-0.150000
+-1.325000,-0.281250,-0.150000
+-1.250000,-0.187500,-0.150000
+-0.950000,-0.450000,-0.150000
+-1.000000,-0.300000,-0.150000
+0.850000,-0.037500,-0.000000
+0.850000,-0.037500,0.330000
+0.850000,-0.450000,0.330000
+0.850000,-0.450000,-0.000000
+1.300000,-0.037500,-0.000000
+1.300000,-0.037500,0.330000
+1.550000,-0.337500,0.330000
+1.550000,-0.337500,-0.000000
+1.150000,0.300000,-0.000000
+1.150000,0.300000,0.125000
+1.200000,0.262500,0.125000
+1.200000,0.262500,-0.000000
+1.350000,0.450000,-0.000000
+1.350000,0.450000,0.125000
+1.650000,0.450000,0.125000
+1.650000,0.450000,-0.000000
+0.850000,-0.450000,-0.330000
+0.850000,-0.037500,-0.330000
+1.550000,-0.337500,-0.330000
+1.300000,-0.037500,-0.330000
+1.200000,0.262500,-0.125000
+1.150000,0.300000,-0.125000
+1.650000,0.450000,-0.125000
+1.350000,0.450000,-0.125000
+1.400000,0.487500,-0.000000
+1.400000,0.487500,0.125000
+1.762500,0.496875,0.125000
+1.762500,0.496875,-0.000000
+1.450000,0.487500,-0.000000
+1.450000,0.487500,0.075000
+1.725000,0.506250,0.075000
+1.725000,0.506250,-0.000000
+1.400000,0.450000,-0.000000
+1.400000,0.450000,0.075000
+1.600000,0.450000,0.075000
+1.600000,0.450000,-0.000000
+1.762500,0.496875,-0.125000
+1.400000,0.487500,-0.125000
+1.725000,0.506250,-0.075000
+1.450000,0.487500,-0.075000
+1.600000,0.450000,-0.075000
+1.400000,0.450000,-0.075000
+0.000000,0.825000,-0.000000
+0.000000,0.825000,0.001000
+0.001000,0.825000,-0.000000
+0.400000,0.825000,-0.000000
+0.400000,0.825000,0.225000
+0.225000,0.825000,0.400000
+0.000000,0.825000,0.400000
+0.000000,0.675000,-0.000000
+0.100000,0.600000,-0.000000
+0.100000,0.600000,0.056000
+0.056000,0.600000,0.100000
+0.000000,0.600000,0.100000
+-0.001000,0.825000,-0.000000
+-0.225000,0.825000,0.400000
+-0.400000,0.825000,0.225000
+-0.400000,0.825000,-0.000000
+-0.056000,0.600000,0.100000
+-0.100000,0.600000,0.056000
+-0.100000,0.600000,-0.000000
+0.000000,0.825000,-0.001000
+-0.400000,0.825000,-0.225000
+-0.225000,0.825000,-0.400000
+0.000000,0.825000,-0.400000
+-0.100000,0.600000,-0.056000
+-0.056000,0.600000,-0.100000
+0.000000,0.600000,-0.100000
+0.225000,0.825000,-0.400000
+0.400000,0.825000,-0.225000
+0.056000,0.600000,-0.100000
+0.100000,0.600000,-0.056000
+0.200000,0.525000,-0.000000
+0.200000,0.525000,0.112000
+0.112000,0.525000,0.200000
+0.000000,0.525000,0.200000
+0.650000,0.525000,-0.000000
+0.650000,0.525000,0.364000
+0.364000,0.525000,0.650000
+0.000000,0.525000,0.650000
+0.650000,0.450000,-0.000000
+0.650000,0.450000,0.364000
+0.364000,0.450000,0.650000
+0.000000,0.450000,0.650000
+-0.112000,0.525000,0.200000
+-0.200000,0.525000,0.112000
+-0.200000,0.525000,-0.000000
+-0.364000,0.525000,0.650000
+-0.650000,0.525000,0.364000
+-0.650000,0.525000,-0.000000
+-0.364000,0.450000,0.650000
+-0.650000,0.450000,0.364000
+-0.650000,0.450000,-0.000000
+-0.200000,0.525000,-0.112000
+-0.112000,0.525000,-0.200000
+0.000000,0.525000,-0.200000
+-0.650000,0.525000,-0.364000
+-0.364000,0.525000,-0.650000
+0.000000,0.525000,-0.650000
+-0.650000,0.450000,-0.364000
+-0.364000,0.450000,-0.650000
+0.000000,0.450000,-0.650000
+0.112000,0.525000,-0.200000
+0.200000,0.525000,-0.112000
+0.364000,0.525000,-0.650000
+0.650000,0.525000,-0.364000
+0.364000,0.450000,-0.650000
+0.650000,0.450000,-0.364000
+0.000000,-0.750000,-0.000000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,-0.420000
+0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.750000,-0.712500,-0.000000
+0.750000,-0.712500,-0.420000
+0.420000,-0.712500,-0.750000
+0.000000,-0.712500,-0.750000
+0.712500,-0.750000,-0.000000
+0.712500,-0.750000,-0.399000
+0.399000,-0.750000,-0.712500
+0.000000,-0.750000,-0.712500
+-0.420000,-0.675000,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.750000,-0.675000,-0.000000
+-0.420000,-0.712500,-0.750000
+-0.750000,-0.712500,-0.420000
+-0.750000,-0.712500,-0.000000
+-0.399000,-0.750000,-0.712500
+-0.712500,-0.750000,-0.399000
+-0.712500,-0.750000,-0.000000
+-0.750000,-0.675000,0.420000
+-0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.750000,-0.712500,0.420000
+-0.420000,-0.712500,0.750000
+0.000000,-0.712500,0.750000
+-0.712500,-0.750000,0.399000
+-0.399000,-0.750000,0.712500
+0.000000,-0.750000,0.712500
+0.420000,-0.675000,0.750000
+0.750000,-0.675000,0.420000
+0.420000,-0.712500,0.750000
+0.750000,-0.712500,0.420000
+0.399000,-0.750000,0.712500
+0.712500,-0.750000,0.399000
diff --git a/examples/quick3d/bounce/qmlres.h b/examples/quick3d/bounce/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/bounce/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/cube/cube.pro b/examples/quick3d/cube/cube.pro
index 53a6ea35..bd458f47 100644
--- a/examples/quick3d/cube/cube.pro
+++ b/examples/quick3d/cube/cube.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = cube_qml
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/cube/main.cpp b/examples/quick3d/cube/main.cpp
index c9e7fb7d..28dffe91 100644
--- a/examples/quick3d/cube/main.cpp
+++ b/examples/quick3d/cube/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/cube.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/cube.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/cube/qml/cube.qml b/examples/quick3d/cube/qml/cube.qml
index 11579dd2..5ef33242 100644
--- a/examples/quick3d/cube/qml/cube.qml
+++ b/examples/quick3d/cube/qml/cube.qml
@@ -55,7 +55,7 @@ Viewport {
effect: Effect {
color: "#aaca00"
- texture: "textures/qtlogo.png"
+ texture: "qtlogo.png"
decal: true
}
}
diff --git a/examples/quick3d/textures/qtlogo.png b/examples/quick3d/cube/qml/qtlogo.png
index 7d3e97eb..7d3e97eb 100644
--- a/examples/quick3d/textures/qtlogo.png
+++ b/examples/quick3d/cube/qml/qtlogo.png
Binary files differ
diff --git a/examples/quick3d/cube/qmlres.h b/examples/quick3d/cube/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/cube/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/dirs b/examples/quick3d/dirs
new file mode 100644
index 00000000..3c0fc235
--- /dev/null
+++ b/examples/quick3d/dirs
@@ -0,0 +1,13 @@
+./bounce
+./cube
+./forest
+./lander
+./matrix_animation
+./monkeygod
+./moon
+./photopane
+./photoroom
+./shaders
+./sphere
+./teapot
+./textures
diff --git a/examples/quick3d/forest/forest.pro b/examples/quick3d/forest/forest.pro
index eca65f13..579679c3 100644
--- a/examples/quick3d/forest/forest.pro
+++ b/examples/quick3d/forest/forest.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = forest_qml
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/forest/main.cpp b/examples/quick3d/forest/main.cpp
index 146ea06c..6ca60063 100644
--- a/examples/quick3d/forest/main.cpp
+++ b/examples/quick3d/forest/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/forest.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/forest.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/forest/qmlres.h b/examples/quick3d/forest/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/forest/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/lander/lander.pro b/examples/quick3d/lander/lander.pro
index 160748c7..2ba573e7 100644
--- a/examples/quick3d/lander/lander.pro
+++ b/examples/quick3d/lander/lander.pro
@@ -1,11 +1,24 @@
TEMPLATE = app
TARGET = lander
CONFIG += qt warn_on
-QT += declarative
+INCLUDEPATH += ../basket
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/lander/main.cpp b/examples/quick3d/lander/main.cpp
index 9439b25f..43441c64 100644
--- a/examples/quick3d/lander/main.cpp
+++ b/examples/quick3d/lander/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/lander.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/lander.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/lander/qmlres.h b/examples/quick3d/lander/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/lander/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/matrix_animation/main.cpp b/examples/quick3d/matrix_animation/main.cpp
index d89d54ca..f4e851fd 100644
--- a/examples/quick3d/matrix_animation/main.cpp
+++ b/examples/quick3d/matrix_animation/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/matrix-animation.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/matrix-animation.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/matrix_animation/matrix_animation.pro b/examples/quick3d/matrix_animation/matrix_animation.pro
index 976e3d0e..5d1afa8a 100644
--- a/examples/quick3d/matrix_animation/matrix_animation.pro
+++ b/examples/quick3d/matrix_animation/matrix_animation.pro
@@ -1,11 +1,25 @@
TEMPLATE = app
TARGET = matrix_animation
CONFIG += qt warn_on
-QT += declarative
-
-DESTDIR = ../../bin
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+INCLUDEPATH += ../basket
SOURCES += main.cpp
+HEADERS += qmlres.h
+
+QT += declarative
+
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/matrix_animation/qml/matrix-animation.qml b/examples/quick3d/matrix_animation/qml/matrix-animation.qml
index 78bd71d2..8834eab4 100644
--- a/examples/quick3d/matrix_animation/qml/matrix-animation.qml
+++ b/examples/quick3d/matrix_animation/qml/matrix-animation.qml
@@ -51,7 +51,7 @@ Viewport {
}
Item3D {
- mesh: Mesh { source: "meshes/teapot.bez" }
+ mesh: Mesh { source: "teapot.bez" }
effect: program
@@ -102,7 +102,7 @@ Viewport {
NumberAnimation { from: 0.001; to: 1.0; duration: 1500; easing.type:"OutBounce" }
}
- texture: "textures/qtlogo.png"
+ texture: "qtlogo.png"
vertexShader: "
attribute highp vec4 qt_Vertex;
diff --git a/examples/quick3d/matrix_animation/qml/qtlogo.png b/examples/quick3d/matrix_animation/qml/qtlogo.png
new file mode 100644
index 00000000..7d3e97eb
--- /dev/null
+++ b/examples/quick3d/matrix_animation/qml/qtlogo.png
Binary files differ
diff --git a/examples/quick3d/matrix_animation/qml/teapot.bez b/examples/quick3d/matrix_animation/qml/teapot.bez
new file mode 100644
index 00000000..02b2ac44
--- /dev/null
+++ b/examples/quick3d/matrix_animation/qml/teapot.bez
@@ -0,0 +1,340 @@
+32
+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+4,17,18,19,8,20,21,22,12,23,24,25,16,26,27,28
+19,29,30,31,22,32,33,34,25,35,36,37,28,38,39,40
+31,41,42,1,34,43,44,5,37,45,46,9,40,47,48,13
+13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60
+16,26,27,28,52,61,62,63,56,64,65,66,60,67,68,69
+28,38,39,40,63,70,71,72,66,73,74,75,69,76,77,78
+40,47,48,13,72,79,80,49,75,81,82,53,78,83,84,57
+57,58,59,60,85,86,87,88,89,90,91,92,93,94,95,96
+60,67,68,69,88,97,98,99,92,100,101,102,96,103,104,105
+69,76,77,78,99,106,107,108,102,109,110,111,105,112,113,114
+78,83,84,57,108,115,116,85,111,117,118,89,114,119,120,93
+121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136
+124,137,138,121,128,139,140,125,132,141,142,129,136,143,144,133
+133,134,135,136,145,146,147,148,149,150,151,152,69,153,154,155
+136,143,144,133,148,156,157,145,152,158,159,149,155,160,161,69
+162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177
+165,178,179,162,169,180,181,166,173,182,183,170,177,184,185,174
+174,175,176,177,186,187,188,189,190,191,192,193,194,195,196,197
+177,184,185,174,189,198,199,186,193,200,201,190,197,202,203,194
+204,204,204,204,207,208,209,210,211,211,211,211,212,213,214,215,4
+204,204,204,204,210,217,218,219,211,211,211,211,215,220,221,222,4
+204,204,204,204,219,224,225,226,211,211,211,211,222,227,228,229,4
+204,204,204,204,226,230,231,207,211,211,211,211,229,232,233,212,4
+212,213,214,215,234,235,236,237,238,239,240,241,242,243,244,245
+215,220,221,222,237,246,247,248,241,249,250,251,245,252,253,254
+222,227,228,229,248,255,256,257,251,258,259,260,254,261,262,263
+229,232,233,212,257,264,265,234,260,266,267,238,263,268,269,242
+270,270,270,270,279,280,281,282,275,276,277,278,271,272,273,274,4
+270,270,270,270,282,289,290,291,278,286,287,288,274,283,284,285,4
+270,270,270,270,291,298,299,300,288,295,296,297,285,292,293,294,4
+270,270,270,270,300,305,306,279,297,303,304,275,294,301,302,271,4
+306
+0.700000,0.450000,-0.000000
+0.700000,0.450000,0.392000
+0.392000,0.450000,0.700000
+0.000000,0.450000,0.700000
+0.668750,0.515625,-0.000000
+0.668750,0.515625,0.374500
+0.374500,0.515625,0.668750
+0.000000,0.515625,0.668750
+0.718750,0.515625,-0.000000
+0.718750,0.515625,0.402500
+0.402500,0.515625,0.718750
+0.000000,0.515625,0.718750
+0.750000,0.450000,-0.000000
+0.750000,0.450000,0.420000
+0.420000,0.450000,0.750000
+0.000000,0.450000,0.750000
+-0.392000,0.450000,0.700000
+-0.700000,0.450000,0.392000
+-0.700000,0.450000,-0.000000
+-0.374500,0.515625,0.668750
+-0.668750,0.515625,0.374500
+-0.668750,0.515625,-0.000000
+-0.402500,0.515625,0.718750
+-0.718750,0.515625,0.402500
+-0.718750,0.515625,-0.000000
+-0.420000,0.450000,0.750000
+-0.750000,0.450000,0.420000
+-0.750000,0.450000,-0.000000
+-0.700000,0.450000,-0.392000
+-0.392000,0.450000,-0.700000
+0.000000,0.450000,-0.700000
+-0.668750,0.515625,-0.374500
+-0.374500,0.515625,-0.668750
+0.000000,0.515625,-0.668750
+-0.718750,0.515625,-0.402500
+-0.402500,0.515625,-0.718750
+0.000000,0.515625,-0.718750
+-0.750000,0.450000,-0.420000
+-0.420000,0.450000,-0.750000
+0.000000,0.450000,-0.750000
+0.392000,0.450000,-0.700000
+0.700000,0.450000,-0.392000
+0.374500,0.515625,-0.668750
+0.668750,0.515625,-0.374500
+0.402500,0.515625,-0.718750
+0.718750,0.515625,-0.402500
+0.420000,0.450000,-0.750000
+0.750000,0.450000,-0.420000
+0.875000,0.187500,-0.000000
+0.875000,0.187500,0.490000
+0.490000,0.187500,0.875000
+0.000000,0.187500,0.875000
+1.000000,-0.075000,-0.000000
+1.000000,-0.075000,0.560000
+0.560000,-0.075000,1.000000
+0.000000,-0.075000,1.000000
+1.000000,-0.300000,-0.000000
+1.000000,-0.300000,0.560000
+0.560000,-0.300000,1.000000
+0.000000,-0.300000,1.000000
+-0.490000,0.187500,0.875000
+-0.875000,0.187500,0.490000
+-0.875000,0.187500,-0.000000
+-0.560000,-0.075000,1.000000
+-1.000000,-0.075000,0.560000
+-1.000000,-0.075000,-0.000000
+-0.560000,-0.300000,1.000000
+-1.000000,-0.300000,0.560000
+-1.000000,-0.300000,-0.000000
+-0.875000,0.187500,-0.490000
+-0.490000,0.187500,-0.875000
+0.000000,0.187500,-0.875000
+-1.000000,-0.075000,-0.560000
+-0.560000,-0.075000,-1.000000
+0.000000,-0.075000,-1.000000
+-1.000000,-0.300000,-0.560000
+-0.560000,-0.300000,-1.000000
+0.000000,-0.300000,-1.000000
+0.490000,0.187500,-0.875000
+0.875000,0.187500,-0.490000
+0.560000,-0.075000,-1.000000
+1.000000,-0.075000,-0.560000
+0.560000,-0.300000,-1.000000
+1.000000,-0.300000,-0.560000
+1.000000,-0.525000,-0.000000
+1.000000,-0.525000,0.560000
+0.560000,-0.525000,1.000000
+0.000000,-0.525000,1.000000
+0.750000,-0.637500,-0.000000
+0.750000,-0.637500,0.420000
+0.420000,-0.637500,0.750000
+0.000000,-0.637500,0.750000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,0.420000
+0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.560000,-0.525000,1.000000
+-1.000000,-0.525000,0.560000
+-1.000000,-0.525000,-0.000000
+-0.420000,-0.637500,0.750000
+-0.750000,-0.637500,0.420000
+-0.750000,-0.637500,-0.000000
+-0.420000,-0.675000,0.750000
+-0.750000,-0.675000,0.420000
+-0.750000,-0.675000,-0.000000
+-1.000000,-0.525000,-0.560000
+-0.560000,-0.525000,-1.000000
+0.000000,-0.525000,-1.000000
+-0.750000,-0.637500,-0.420000
+-0.420000,-0.637500,-0.750000
+0.000000,-0.637500,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.560000,-0.525000,-1.000000
+1.000000,-0.525000,-0.560000
+0.420000,-0.637500,-0.750000
+0.750000,-0.637500,-0.420000
+0.420000,-0.675000,-0.750000
+0.750000,-0.675000,-0.420000
+-0.800000,0.262500,-0.000000
+-0.800000,0.262500,0.150000
+-0.750000,0.375000,0.150000
+-0.750000,0.375000,-0.000000
+-1.150000,0.262500,-0.000000
+-1.150000,0.262500,0.150000
+-1.250000,0.375000,0.150000
+-1.250000,0.375000,-0.000000
+-1.350000,0.262500,-0.000000
+-1.350000,0.262500,0.150000
+-1.500000,0.375000,0.150000
+-1.500000,0.375000,-0.000000
+-1.350000,0.150000,-0.000000
+-1.350000,0.150000,0.150000
+-1.500000,0.150000,0.150000
+-1.500000,0.150000,-0.000000
+-0.750000,0.375000,-0.150000
+-0.800000,0.262500,-0.150000
+-1.250000,0.375000,-0.150000
+-1.150000,0.262500,-0.150000
+-1.500000,0.375000,-0.150000
+-1.350000,0.262500,-0.150000
+-1.500000,0.150000,-0.150000
+-1.350000,0.150000,-0.150000
+-1.350000,0.037500,-0.000000
+-1.350000,0.037500,0.150000
+-1.500000,-0.075000,0.150000
+-1.500000,-0.075000,-0.000000
+-1.250000,-0.187500,-0.000000
+-1.250000,-0.187500,0.150000
+-1.325000,-0.281250,0.150000
+-1.325000,-0.281250,-0.000000
+-1.000000,-0.300000,0.150000
+-0.950000,-0.450000,0.150000
+-0.950000,-0.450000,-0.000000
+-1.500000,-0.075000,-0.150000
+-1.350000,0.037500,-0.150000
+-1.325000,-0.281250,-0.150000
+-1.250000,-0.187500,-0.150000
+-0.950000,-0.450000,-0.150000
+-1.000000,-0.300000,-0.150000
+0.850000,-0.037500,-0.000000
+0.850000,-0.037500,0.330000
+0.850000,-0.450000,0.330000
+0.850000,-0.450000,-0.000000
+1.300000,-0.037500,-0.000000
+1.300000,-0.037500,0.330000
+1.550000,-0.337500,0.330000
+1.550000,-0.337500,-0.000000
+1.150000,0.300000,-0.000000
+1.150000,0.300000,0.125000
+1.200000,0.262500,0.125000
+1.200000,0.262500,-0.000000
+1.350000,0.450000,-0.000000
+1.350000,0.450000,0.125000
+1.650000,0.450000,0.125000
+1.650000,0.450000,-0.000000
+0.850000,-0.450000,-0.330000
+0.850000,-0.037500,-0.330000
+1.550000,-0.337500,-0.330000
+1.300000,-0.037500,-0.330000
+1.200000,0.262500,-0.125000
+1.150000,0.300000,-0.125000
+1.650000,0.450000,-0.125000
+1.350000,0.450000,-0.125000
+1.400000,0.487500,-0.000000
+1.400000,0.487500,0.125000
+1.762500,0.496875,0.125000
+1.762500,0.496875,-0.000000
+1.450000,0.487500,-0.000000
+1.450000,0.487500,0.075000
+1.725000,0.506250,0.075000
+1.725000,0.506250,-0.000000
+1.400000,0.450000,-0.000000
+1.400000,0.450000,0.075000
+1.600000,0.450000,0.075000
+1.600000,0.450000,-0.000000
+1.762500,0.496875,-0.125000
+1.400000,0.487500,-0.125000
+1.725000,0.506250,-0.075000
+1.450000,0.487500,-0.075000
+1.600000,0.450000,-0.075000
+1.400000,0.450000,-0.075000
+0.000000,0.825000,-0.000000
+0.000000,0.825000,0.001000
+0.001000,0.825000,-0.000000
+0.400000,0.825000,-0.000000
+0.400000,0.825000,0.225000
+0.225000,0.825000,0.400000
+0.000000,0.825000,0.400000
+0.000000,0.675000,-0.000000
+0.100000,0.600000,-0.000000
+0.100000,0.600000,0.056000
+0.056000,0.600000,0.100000
+0.000000,0.600000,0.100000
+-0.001000,0.825000,-0.000000
+-0.225000,0.825000,0.400000
+-0.400000,0.825000,0.225000
+-0.400000,0.825000,-0.000000
+-0.056000,0.600000,0.100000
+-0.100000,0.600000,0.056000
+-0.100000,0.600000,-0.000000
+0.000000,0.825000,-0.001000
+-0.400000,0.825000,-0.225000
+-0.225000,0.825000,-0.400000
+0.000000,0.825000,-0.400000
+-0.100000,0.600000,-0.056000
+-0.056000,0.600000,-0.100000
+0.000000,0.600000,-0.100000
+0.225000,0.825000,-0.400000
+0.400000,0.825000,-0.225000
+0.056000,0.600000,-0.100000
+0.100000,0.600000,-0.056000
+0.200000,0.525000,-0.000000
+0.200000,0.525000,0.112000
+0.112000,0.525000,0.200000
+0.000000,0.525000,0.200000
+0.650000,0.525000,-0.000000
+0.650000,0.525000,0.364000
+0.364000,0.525000,0.650000
+0.000000,0.525000,0.650000
+0.650000,0.450000,-0.000000
+0.650000,0.450000,0.364000
+0.364000,0.450000,0.650000
+0.000000,0.450000,0.650000
+-0.112000,0.525000,0.200000
+-0.200000,0.525000,0.112000
+-0.200000,0.525000,-0.000000
+-0.364000,0.525000,0.650000
+-0.650000,0.525000,0.364000
+-0.650000,0.525000,-0.000000
+-0.364000,0.450000,0.650000
+-0.650000,0.450000,0.364000
+-0.650000,0.450000,-0.000000
+-0.200000,0.525000,-0.112000
+-0.112000,0.525000,-0.200000
+0.000000,0.525000,-0.200000
+-0.650000,0.525000,-0.364000
+-0.364000,0.525000,-0.650000
+0.000000,0.525000,-0.650000
+-0.650000,0.450000,-0.364000
+-0.364000,0.450000,-0.650000
+0.000000,0.450000,-0.650000
+0.112000,0.525000,-0.200000
+0.200000,0.525000,-0.112000
+0.364000,0.525000,-0.650000
+0.650000,0.525000,-0.364000
+0.364000,0.450000,-0.650000
+0.650000,0.450000,-0.364000
+0.000000,-0.750000,-0.000000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,-0.420000
+0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.750000,-0.712500,-0.000000
+0.750000,-0.712500,-0.420000
+0.420000,-0.712500,-0.750000
+0.000000,-0.712500,-0.750000
+0.712500,-0.750000,-0.000000
+0.712500,-0.750000,-0.399000
+0.399000,-0.750000,-0.712500
+0.000000,-0.750000,-0.712500
+-0.420000,-0.675000,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.750000,-0.675000,-0.000000
+-0.420000,-0.712500,-0.750000
+-0.750000,-0.712500,-0.420000
+-0.750000,-0.712500,-0.000000
+-0.399000,-0.750000,-0.712500
+-0.712500,-0.750000,-0.399000
+-0.712500,-0.750000,-0.000000
+-0.750000,-0.675000,0.420000
+-0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.750000,-0.712500,0.420000
+-0.420000,-0.712500,0.750000
+0.000000,-0.712500,0.750000
+-0.712500,-0.750000,0.399000
+-0.399000,-0.750000,0.712500
+0.000000,-0.750000,0.712500
+0.420000,-0.675000,0.750000
+0.750000,-0.675000,0.420000
+0.420000,-0.712500,0.750000
+0.750000,-0.712500,0.420000
+0.399000,-0.750000,0.712500
+0.712500,-0.750000,0.399000
diff --git a/examples/quick3d/matrix_animation/qmlres.h b/examples/quick3d/matrix_animation/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/matrix_animation/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/monkeygod/main.cpp b/examples/quick3d/monkeygod/main.cpp
index 79600bc8..17a5f10b 100644
--- a/examples/quick3d/monkeygod/main.cpp
+++ b/examples/quick3d/monkeygod/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/monkeygod.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/monkeygod.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/monkeygod/monkeygod.pro b/examples/quick3d/monkeygod/monkeygod.pro
index cdfbfc7d..dc19bada 100644
--- a/examples/quick3d/monkeygod/monkeygod.pro
+++ b/examples/quick3d/monkeygod/monkeygod.pro
@@ -1,11 +1,25 @@
TEMPLATE = app
TARGET = monkeygod
CONFIG += qt warn_on
-QT += declarative
-
-DESTDIR = ../../bin
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+INCLUDEPATH += ../basket
SOURCES += main.cpp
+HEADERS += qmlres.h
+
+QT += declarative
+
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/monkeygod/qml/marble.png b/examples/quick3d/monkeygod/qml/marble.png
new file mode 100644
index 00000000..ed9ec689
--- /dev/null
+++ b/examples/quick3d/monkeygod/qml/marble.png
Binary files differ
diff --git a/examples/quick3d/monkeygod/qml/monkeygod.qml b/examples/quick3d/monkeygod/qml/monkeygod.qml
index 0782f5e5..50364efc 100644
--- a/examples/quick3d/monkeygod/qml/monkeygod.qml
+++ b/examples/quick3d/monkeygod/qml/monkeygod.qml
@@ -40,6 +40,7 @@
import Qt 4.7
import Qt3D 1.0
+import Qt3D.Shapes 1.0
Viewport {
width: 1000
@@ -76,13 +77,16 @@ import Qt3D 1.0
}
}
- Item3D {
- scale: 0.012
+ Cube {
+ scale: 2.0
y: -6.5
z: -2
- mesh: Mesh { source: "meshes/lintel.3ds"}
- transform: [Rotation3D {angle: -90; axis: Qt.vector3d(1,0,0)}]
- effect: Effect{}
+
+ effect: Effect {
+ color: "#aaca00"
+ texture: "marble.png"
+ decal: true
+ }
}
Item3D
diff --git a/examples/quick3d/monkeygod/qml/monkeygod_no_platform.qml b/examples/quick3d/monkeygod/qml/monkeygod_no_platform.qml
deleted file mode 100644
index eb2ee3fa..00000000
--- a/examples/quick3d/monkeygod/qml/monkeygod_no_platform.qml
+++ /dev/null
@@ -1,110 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-import Qt3D 1.0
-
-Rectangle {
- color: "#AAAA22"
- width: 1000
- height: 800
-
- Viewport {
- anchors.fill: parent
-
- camera: Camera { eye: Qt.vector3d(21,7,19)}
-
- Item3D {
- id: monkey
- scale: 2
- position: Qt.vector3d(0, 1.5, -6)
-
- mesh: Mesh { source: "meshes/monkey.3ds"; options: "ForceSmooth"}
- effect: Effect { material: gold}
- }
-
- Item3D
- {
- Penguin {position: Qt.vector3d(-1.5,0,1)}
- Penguin {position: Qt.vector3d(1.5,0,1)}
- Penguin {position: Qt.vector3d(-0.5,0,2)}
- Penguin {position: Qt.vector3d(0.5,0,2)}
-
- transform: [
- Rotation3D {id: swivel1; angle: -20; axis: Qt.vector3d(0,1,0)}
- ]
-
- SequentialAnimation {
- running: true
- loops: 100
- NumberAnimation {target: swivel1; property: "angle"; to: 20; duration: 1200; easing.type: "OutQuad"}
- NumberAnimation {target: swivel1; property: "angle"; to: -20; duration: 1200; easing.type: "OutQuad"}
- }
- }
-
- Item3D
- {
- Penguin {position: Qt.vector3d(-2.5,0,2)}
- Penguin {position: Qt.vector3d(2.5,0,2)}
- Penguin {position: Qt.vector3d(-1.5,0,3)}
- Penguin {position: Qt.vector3d(1.5,0,3)}
- Penguin {position: Qt.vector3d(-0.5,0,3.5)}
- Penguin {position: Qt.vector3d(0.5,0,3.5)}
-
- transform: [
- Rotation3D {id: swivel2; angle: 20; axis: Qt.vector3d(0,1,0)}
- ]
-
- SequentialAnimation {
- running: true
- loops: 100
- NumberAnimation {target: swivel2; property: "angle"; to: -20; duration: 1200; easing.type: "OutQuad"}
- NumberAnimation {target: swivel2; property: "angle"; to: 20; duration: 1200; easing.type: "OutQuad"}
- }
- }
-
- Material {
- id: gold
- ambientColor: "#EEDD00"
- specularColor: "#FFFFFF"
- shininess: 200
- }
- }
-}
diff --git a/examples/quick3d/monkeygod/qmlres.h b/examples/quick3d/monkeygod/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/monkeygod/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/moon/main.cpp b/examples/quick3d/moon/main.cpp
index a837a189..15191cae 100644
--- a/examples/quick3d/moon/main.cpp
+++ b/examples/quick3d/moon/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/moon.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/moon.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/moon/moon.pro b/examples/quick3d/moon/moon.pro
index c45709fb..150639f4 100644
--- a/examples/quick3d/moon/moon.pro
+++ b/examples/quick3d/moon/moon.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
-TARGET = basket_qml
+TARGET = moon
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/moon/qmlres.h b/examples/quick3d/moon/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/moon/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/photopane/photopane.pro b/examples/quick3d/photopane/photopane.pro
deleted file mode 100644
index c8fc96e7..00000000
--- a/examples/quick3d/photopane/photopane.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = app
-TARGET = photopane
-CONFIG += qt warn_on
-QT += declarative
-
-DESTDIR = ../../bin
-
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
-
-SOURCES += main.cpp
diff --git a/examples/quick3d/photoroom/main.cpp b/examples/quick3d/photoroom/main.cpp
index f9afab07..e2bcd9ca 100644
--- a/examples/quick3d/photoroom/main.cpp
+++ b/examples/quick3d/photoroom/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/photoroom.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/photoroom.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/photoroom/photoroom.pro b/examples/quick3d/photoroom/photoroom.pro
index 5a7bb1a8..526271ec 100644
--- a/examples/quick3d/photoroom/photoroom.pro
+++ b/examples/quick3d/photoroom/photoroom.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = photoroom
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/photopane/qml/photopane.qml b/examples/quick3d/photoroom/qml/PhotoPane.qml
index 1b22c8f0..235af894 100644
--- a/examples/quick3d/photopane/qml/photopane.qml
+++ b/examples/quick3d/photoroom/qml/PhotoPane.qml
@@ -49,7 +49,7 @@ Item3D {
property variant image
property bool bounce: false
- mesh: Mesh { source: "meshes/photopane.obj" }
+ mesh: Mesh { source: "photopane.obj" }
position: Qt.vector3d(offset, 0, -layer)
effect: Effect { decal: true; texture: image }
diff --git a/examples/quick3d/photoroom/qml/photopane.obj b/examples/quick3d/photoroom/qml/photopane.obj
new file mode 100644
index 00000000..1f5e91df
--- /dev/null
+++ b/examples/quick3d/photoroom/qml/photopane.obj
@@ -0,0 +1,11 @@
+s 0
+v -2 -1.5 0.0
+v 2 -1.5 0.0
+v 2 1.5 0.0
+v -2 1.5 0.0
+vt 0.0 0.0
+vt 1.0 0.0
+vt 1.0 1.0
+vt 0.0 1.0
+vn 0.0 0.0 1.0
+f 1/1/1 2/2/1 3/3/1 4/4/1
diff --git a/examples/quick3d/photoroom/qml/photoroom.qml b/examples/quick3d/photoroom/qml/photoroom.qml
index 120ad0a2..228a984e 100644
--- a/examples/quick3d/photoroom/qml/photoroom.qml
+++ b/examples/quick3d/photoroom/qml/photoroom.qml
@@ -57,22 +57,22 @@ Viewport {
PhotoPane {
offset: -2.1
layer: 0
- image: "textures/button/woman.jpg"
+ image: "textures/woman.jpg"
}
PhotoPane {
offset: -2.1
layer: 1
- image: "textures/photos/niagara_falls.jpg"
+ image: "textures/niagara_falls.jpg"
}
PhotoPane {
offset: -2.1
layer: 2
- image: "textures/photos/place.jpg"
+ image: "textures/place.jpg"
}
PhotoPane {
offset: -2.1
layer: 3
- image: "textures/photos/background.jpg"
+ image: "textures/background.jpg"
}
PhotoPane {
offset: -2.1
@@ -89,17 +89,17 @@ Viewport {
PhotoPane {
offset: 2.1
layer: 0
- image: "textures/photos/niagara_falls.jpg"
+ image: "textures/niagara_falls.jpg"
}
PhotoPane {
offset: 2.1
layer: 1
- image: "textures/photos/place.jpg"
+ image: "textures/place.jpg"
}
PhotoPane {
offset: 2.1
layer: 2
- image: "textures/photos/background.jpg"
+ image: "textures/background.jpg"
}
PhotoPane {
offset: 2.1
diff --git a/examples/quick3d/textures/photos/background.jpg b/examples/quick3d/photoroom/qml/textures/background.jpg
index 9884233a..9884233a 100644
--- a/examples/quick3d/textures/photos/background.jpg
+++ b/examples/quick3d/photoroom/qml/textures/background.jpg
Binary files differ
diff --git a/examples/quick3d/photoroom/qml/textures/basket.jpg b/examples/quick3d/photoroom/qml/textures/basket.jpg
new file mode 100644
index 00000000..438e7a0c
--- /dev/null
+++ b/examples/quick3d/photoroom/qml/textures/basket.jpg
Binary files differ
diff --git a/examples/quick3d/textures/photos/niagara_falls.jpg b/examples/quick3d/photoroom/qml/textures/niagara_falls.jpg
index 7a912d3b..7a912d3b 100644
--- a/examples/quick3d/textures/photos/niagara_falls.jpg
+++ b/examples/quick3d/photoroom/qml/textures/niagara_falls.jpg
Binary files differ
diff --git a/examples/quick3d/textures/photos/place.jpg b/examples/quick3d/photoroom/qml/textures/place.jpg
index 03e53443..03e53443 100644
--- a/examples/quick3d/textures/photos/place.jpg
+++ b/examples/quick3d/photoroom/qml/textures/place.jpg
Binary files differ
diff --git a/examples/quick3d/photoroom/qml/textures/qtlogo.png b/examples/quick3d/photoroom/qml/textures/qtlogo.png
new file mode 100644
index 00000000..7d3e97eb
--- /dev/null
+++ b/examples/quick3d/photoroom/qml/textures/qtlogo.png
Binary files differ
diff --git a/examples/quick3d/textures/button/woman-photo-credit.txt b/examples/quick3d/photoroom/qml/textures/woman-photo-credit.txt
index c7f04c1c..c7f04c1c 100644
--- a/examples/quick3d/textures/button/woman-photo-credit.txt
+++ b/examples/quick3d/photoroom/qml/textures/woman-photo-credit.txt
diff --git a/examples/quick3d/textures/button/woman.jpg b/examples/quick3d/photoroom/qml/textures/woman.jpg
index f3a6abc2..f3a6abc2 100644
--- a/examples/quick3d/textures/button/woman.jpg
+++ b/examples/quick3d/photoroom/qml/textures/woman.jpg
Binary files differ
diff --git a/examples/quick3d/photoroom/qmlres.h b/examples/quick3d/photoroom/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/photoroom/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/quick3d.pro b/examples/quick3d/quick3d.pro
index 7e70381a..8db822ee 100644
--- a/examples/quick3d/quick3d.pro
+++ b/examples/quick3d/quick3d.pro
@@ -8,7 +8,6 @@ SUBDIRS += \
matrix_animation \
monkeygod \
moon \
- photopane \
photoroom \
shaders \
sphere \
diff --git a/examples/quick3d/shaders/main.cpp b/examples/quick3d/shaders/main.cpp
index 3d0a97ee..c22b06f6 100644
--- a/examples/quick3d/shaders/main.cpp
+++ b/examples/quick3d/shaders/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/shaders.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/shaders.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/shaders/qml/Animation.qml b/examples/quick3d/shaders/qml/Bouncing.qml
index 4bfa01b8..4bfa01b8 100644
--- a/examples/quick3d/shaders/qml/Animation.qml
+++ b/examples/quick3d/shaders/qml/Bouncing.qml
diff --git a/examples/quick3d/shaders/qml/shaders.qml b/examples/quick3d/shaders/qml/shaders.qml
index 4b623779..da7d6c5e 100644
--- a/examples/quick3d/shaders/qml/shaders.qml
+++ b/examples/quick3d/shaders/qml/shaders.qml
@@ -8,7 +8,7 @@ Rectangle {
width: parent.width
anchors.top: parent.top
- anchors.bottom: tabBar.top
+ anchors.bottom: tabButtonArea.top
Repeater {
model: tabsModel
}
@@ -16,10 +16,10 @@ Rectangle {
VisualItemModel {
id: tabsModel
- Animation { }
Collapsing { }
Images { }
Interpolate { }
+ Bouncing { }
}
Rectangle {
@@ -38,16 +38,6 @@ Rectangle {
Component {
id: tabButton
- onStatusChanged:
-
- function tabClicked(index)
- {
- tabs.children[current].color = "transparent";
- tabsModel.children[current].visible = false;
- current = index;
- tabs.children[current].color = "#30ffffff";
- tabsModel.children[current].visible = true;
- }
Rectangle {
height: tabButtonArea.height
@@ -89,5 +79,23 @@ Rectangle {
}
}
+ function tabClicked(index)
+ {
+ tabs.children[current].color = "transparent";
+ tabsModel.children[current].visible = false;
+ current = index;
+ tabs.children[current].color = "#30ffffff";
+ tabsModel.children[current].visible = true;
+ }
+
Component.onCompleted:
+ {
+ // hide all the tab views
+ for(var i = 0; i < tabsModel.children.length; i++)
+ {
+ tabsModel.children[i].visible = false;
+ }
+ // select the default tab index
+ tabClicked(current);
+ }
}
diff --git a/examples/quick3d/shaders/qml/shaders.qmlproject b/examples/quick3d/shaders/qml/shaders.qmlproject
new file mode 100644
index 00000000..53f5ecb8
--- /dev/null
+++ b/examples/quick3d/shaders/qml/shaders.qmlproject
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ "../exampleplugin" ]
+}
diff --git a/examples/quick3d/shaders/qmlres.h b/examples/quick3d/shaders/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/shaders/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/shaders/shaders.pro b/examples/quick3d/shaders/shaders.pro
index a0141a5b..b563b3d3 100644
--- a/examples/quick3d/shaders/shaders.pro
+++ b/examples/quick3d/shaders/shaders.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = shaders
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/sphere/main.cpp b/examples/quick3d/sphere/main.cpp
index f9afab07..0a08a034 100644
--- a/examples/quick3d/sphere/main.cpp
+++ b/examples/quick3d/sphere/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/photoroom.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/sphere.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/sphere/qmlres.h b/examples/quick3d/sphere/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/sphere/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/sphere/sphere.pro b/examples/quick3d/sphere/sphere.pro
index 9d8ea6d4..b0b450c7 100644
--- a/examples/quick3d/sphere/sphere.pro
+++ b/examples/quick3d/sphere/sphere.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
TARGET = sphere
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/teapot/main.cpp b/examples/quick3d/teapot/main.cpp
index 0e2652a5..24bfc1d2 100644
--- a/examples/quick3d/teapot/main.cpp
+++ b/examples/quick3d/teapot/main.cpp
@@ -42,12 +42,15 @@
#include <QtGui/QApplication>
#include <QtDeclarative/qdeclarativeview.h>
+#include "qmlres.h"
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
- view.setSource(QUrl::fromLocalFile(QLatin1String("qml/teapot.qml")));
+ QString qml = q_get_qmldir(QLatin1String("qml/teapot.qml"));
+ view.setSource(QUrl::fromLocalFile(qml));
if (QApplication::arguments().contains(QLatin1String("-maximize")))
view.showMaximized();
diff --git a/examples/quick3d/teapot/qml/teapot.bez b/examples/quick3d/teapot/qml/teapot.bez
new file mode 100644
index 00000000..02b2ac44
--- /dev/null
+++ b/examples/quick3d/teapot/qml/teapot.bez
@@ -0,0 +1,340 @@
+32
+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+4,17,18,19,8,20,21,22,12,23,24,25,16,26,27,28
+19,29,30,31,22,32,33,34,25,35,36,37,28,38,39,40
+31,41,42,1,34,43,44,5,37,45,46,9,40,47,48,13
+13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60
+16,26,27,28,52,61,62,63,56,64,65,66,60,67,68,69
+28,38,39,40,63,70,71,72,66,73,74,75,69,76,77,78
+40,47,48,13,72,79,80,49,75,81,82,53,78,83,84,57
+57,58,59,60,85,86,87,88,89,90,91,92,93,94,95,96
+60,67,68,69,88,97,98,99,92,100,101,102,96,103,104,105
+69,76,77,78,99,106,107,108,102,109,110,111,105,112,113,114
+78,83,84,57,108,115,116,85,111,117,118,89,114,119,120,93
+121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136
+124,137,138,121,128,139,140,125,132,141,142,129,136,143,144,133
+133,134,135,136,145,146,147,148,149,150,151,152,69,153,154,155
+136,143,144,133,148,156,157,145,152,158,159,149,155,160,161,69
+162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177
+165,178,179,162,169,180,181,166,173,182,183,170,177,184,185,174
+174,175,176,177,186,187,188,189,190,191,192,193,194,195,196,197
+177,184,185,174,189,198,199,186,193,200,201,190,197,202,203,194
+204,204,204,204,207,208,209,210,211,211,211,211,212,213,214,215,4
+204,204,204,204,210,217,218,219,211,211,211,211,215,220,221,222,4
+204,204,204,204,219,224,225,226,211,211,211,211,222,227,228,229,4
+204,204,204,204,226,230,231,207,211,211,211,211,229,232,233,212,4
+212,213,214,215,234,235,236,237,238,239,240,241,242,243,244,245
+215,220,221,222,237,246,247,248,241,249,250,251,245,252,253,254
+222,227,228,229,248,255,256,257,251,258,259,260,254,261,262,263
+229,232,233,212,257,264,265,234,260,266,267,238,263,268,269,242
+270,270,270,270,279,280,281,282,275,276,277,278,271,272,273,274,4
+270,270,270,270,282,289,290,291,278,286,287,288,274,283,284,285,4
+270,270,270,270,291,298,299,300,288,295,296,297,285,292,293,294,4
+270,270,270,270,300,305,306,279,297,303,304,275,294,301,302,271,4
+306
+0.700000,0.450000,-0.000000
+0.700000,0.450000,0.392000
+0.392000,0.450000,0.700000
+0.000000,0.450000,0.700000
+0.668750,0.515625,-0.000000
+0.668750,0.515625,0.374500
+0.374500,0.515625,0.668750
+0.000000,0.515625,0.668750
+0.718750,0.515625,-0.000000
+0.718750,0.515625,0.402500
+0.402500,0.515625,0.718750
+0.000000,0.515625,0.718750
+0.750000,0.450000,-0.000000
+0.750000,0.450000,0.420000
+0.420000,0.450000,0.750000
+0.000000,0.450000,0.750000
+-0.392000,0.450000,0.700000
+-0.700000,0.450000,0.392000
+-0.700000,0.450000,-0.000000
+-0.374500,0.515625,0.668750
+-0.668750,0.515625,0.374500
+-0.668750,0.515625,-0.000000
+-0.402500,0.515625,0.718750
+-0.718750,0.515625,0.402500
+-0.718750,0.515625,-0.000000
+-0.420000,0.450000,0.750000
+-0.750000,0.450000,0.420000
+-0.750000,0.450000,-0.000000
+-0.700000,0.450000,-0.392000
+-0.392000,0.450000,-0.700000
+0.000000,0.450000,-0.700000
+-0.668750,0.515625,-0.374500
+-0.374500,0.515625,-0.668750
+0.000000,0.515625,-0.668750
+-0.718750,0.515625,-0.402500
+-0.402500,0.515625,-0.718750
+0.000000,0.515625,-0.718750
+-0.750000,0.450000,-0.420000
+-0.420000,0.450000,-0.750000
+0.000000,0.450000,-0.750000
+0.392000,0.450000,-0.700000
+0.700000,0.450000,-0.392000
+0.374500,0.515625,-0.668750
+0.668750,0.515625,-0.374500
+0.402500,0.515625,-0.718750
+0.718750,0.515625,-0.402500
+0.420000,0.450000,-0.750000
+0.750000,0.450000,-0.420000
+0.875000,0.187500,-0.000000
+0.875000,0.187500,0.490000
+0.490000,0.187500,0.875000
+0.000000,0.187500,0.875000
+1.000000,-0.075000,-0.000000
+1.000000,-0.075000,0.560000
+0.560000,-0.075000,1.000000
+0.000000,-0.075000,1.000000
+1.000000,-0.300000,-0.000000
+1.000000,-0.300000,0.560000
+0.560000,-0.300000,1.000000
+0.000000,-0.300000,1.000000
+-0.490000,0.187500,0.875000
+-0.875000,0.187500,0.490000
+-0.875000,0.187500,-0.000000
+-0.560000,-0.075000,1.000000
+-1.000000,-0.075000,0.560000
+-1.000000,-0.075000,-0.000000
+-0.560000,-0.300000,1.000000
+-1.000000,-0.300000,0.560000
+-1.000000,-0.300000,-0.000000
+-0.875000,0.187500,-0.490000
+-0.490000,0.187500,-0.875000
+0.000000,0.187500,-0.875000
+-1.000000,-0.075000,-0.560000
+-0.560000,-0.075000,-1.000000
+0.000000,-0.075000,-1.000000
+-1.000000,-0.300000,-0.560000
+-0.560000,-0.300000,-1.000000
+0.000000,-0.300000,-1.000000
+0.490000,0.187500,-0.875000
+0.875000,0.187500,-0.490000
+0.560000,-0.075000,-1.000000
+1.000000,-0.075000,-0.560000
+0.560000,-0.300000,-1.000000
+1.000000,-0.300000,-0.560000
+1.000000,-0.525000,-0.000000
+1.000000,-0.525000,0.560000
+0.560000,-0.525000,1.000000
+0.000000,-0.525000,1.000000
+0.750000,-0.637500,-0.000000
+0.750000,-0.637500,0.420000
+0.420000,-0.637500,0.750000
+0.000000,-0.637500,0.750000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,0.420000
+0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.560000,-0.525000,1.000000
+-1.000000,-0.525000,0.560000
+-1.000000,-0.525000,-0.000000
+-0.420000,-0.637500,0.750000
+-0.750000,-0.637500,0.420000
+-0.750000,-0.637500,-0.000000
+-0.420000,-0.675000,0.750000
+-0.750000,-0.675000,0.420000
+-0.750000,-0.675000,-0.000000
+-1.000000,-0.525000,-0.560000
+-0.560000,-0.525000,-1.000000
+0.000000,-0.525000,-1.000000
+-0.750000,-0.637500,-0.420000
+-0.420000,-0.637500,-0.750000
+0.000000,-0.637500,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.560000,-0.525000,-1.000000
+1.000000,-0.525000,-0.560000
+0.420000,-0.637500,-0.750000
+0.750000,-0.637500,-0.420000
+0.420000,-0.675000,-0.750000
+0.750000,-0.675000,-0.420000
+-0.800000,0.262500,-0.000000
+-0.800000,0.262500,0.150000
+-0.750000,0.375000,0.150000
+-0.750000,0.375000,-0.000000
+-1.150000,0.262500,-0.000000
+-1.150000,0.262500,0.150000
+-1.250000,0.375000,0.150000
+-1.250000,0.375000,-0.000000
+-1.350000,0.262500,-0.000000
+-1.350000,0.262500,0.150000
+-1.500000,0.375000,0.150000
+-1.500000,0.375000,-0.000000
+-1.350000,0.150000,-0.000000
+-1.350000,0.150000,0.150000
+-1.500000,0.150000,0.150000
+-1.500000,0.150000,-0.000000
+-0.750000,0.375000,-0.150000
+-0.800000,0.262500,-0.150000
+-1.250000,0.375000,-0.150000
+-1.150000,0.262500,-0.150000
+-1.500000,0.375000,-0.150000
+-1.350000,0.262500,-0.150000
+-1.500000,0.150000,-0.150000
+-1.350000,0.150000,-0.150000
+-1.350000,0.037500,-0.000000
+-1.350000,0.037500,0.150000
+-1.500000,-0.075000,0.150000
+-1.500000,-0.075000,-0.000000
+-1.250000,-0.187500,-0.000000
+-1.250000,-0.187500,0.150000
+-1.325000,-0.281250,0.150000
+-1.325000,-0.281250,-0.000000
+-1.000000,-0.300000,0.150000
+-0.950000,-0.450000,0.150000
+-0.950000,-0.450000,-0.000000
+-1.500000,-0.075000,-0.150000
+-1.350000,0.037500,-0.150000
+-1.325000,-0.281250,-0.150000
+-1.250000,-0.187500,-0.150000
+-0.950000,-0.450000,-0.150000
+-1.000000,-0.300000,-0.150000
+0.850000,-0.037500,-0.000000
+0.850000,-0.037500,0.330000
+0.850000,-0.450000,0.330000
+0.850000,-0.450000,-0.000000
+1.300000,-0.037500,-0.000000
+1.300000,-0.037500,0.330000
+1.550000,-0.337500,0.330000
+1.550000,-0.337500,-0.000000
+1.150000,0.300000,-0.000000
+1.150000,0.300000,0.125000
+1.200000,0.262500,0.125000
+1.200000,0.262500,-0.000000
+1.350000,0.450000,-0.000000
+1.350000,0.450000,0.125000
+1.650000,0.450000,0.125000
+1.650000,0.450000,-0.000000
+0.850000,-0.450000,-0.330000
+0.850000,-0.037500,-0.330000
+1.550000,-0.337500,-0.330000
+1.300000,-0.037500,-0.330000
+1.200000,0.262500,-0.125000
+1.150000,0.300000,-0.125000
+1.650000,0.450000,-0.125000
+1.350000,0.450000,-0.125000
+1.400000,0.487500,-0.000000
+1.400000,0.487500,0.125000
+1.762500,0.496875,0.125000
+1.762500,0.496875,-0.000000
+1.450000,0.487500,-0.000000
+1.450000,0.487500,0.075000
+1.725000,0.506250,0.075000
+1.725000,0.506250,-0.000000
+1.400000,0.450000,-0.000000
+1.400000,0.450000,0.075000
+1.600000,0.450000,0.075000
+1.600000,0.450000,-0.000000
+1.762500,0.496875,-0.125000
+1.400000,0.487500,-0.125000
+1.725000,0.506250,-0.075000
+1.450000,0.487500,-0.075000
+1.600000,0.450000,-0.075000
+1.400000,0.450000,-0.075000
+0.000000,0.825000,-0.000000
+0.000000,0.825000,0.001000
+0.001000,0.825000,-0.000000
+0.400000,0.825000,-0.000000
+0.400000,0.825000,0.225000
+0.225000,0.825000,0.400000
+0.000000,0.825000,0.400000
+0.000000,0.675000,-0.000000
+0.100000,0.600000,-0.000000
+0.100000,0.600000,0.056000
+0.056000,0.600000,0.100000
+0.000000,0.600000,0.100000
+-0.001000,0.825000,-0.000000
+-0.225000,0.825000,0.400000
+-0.400000,0.825000,0.225000
+-0.400000,0.825000,-0.000000
+-0.056000,0.600000,0.100000
+-0.100000,0.600000,0.056000
+-0.100000,0.600000,-0.000000
+0.000000,0.825000,-0.001000
+-0.400000,0.825000,-0.225000
+-0.225000,0.825000,-0.400000
+0.000000,0.825000,-0.400000
+-0.100000,0.600000,-0.056000
+-0.056000,0.600000,-0.100000
+0.000000,0.600000,-0.100000
+0.225000,0.825000,-0.400000
+0.400000,0.825000,-0.225000
+0.056000,0.600000,-0.100000
+0.100000,0.600000,-0.056000
+0.200000,0.525000,-0.000000
+0.200000,0.525000,0.112000
+0.112000,0.525000,0.200000
+0.000000,0.525000,0.200000
+0.650000,0.525000,-0.000000
+0.650000,0.525000,0.364000
+0.364000,0.525000,0.650000
+0.000000,0.525000,0.650000
+0.650000,0.450000,-0.000000
+0.650000,0.450000,0.364000
+0.364000,0.450000,0.650000
+0.000000,0.450000,0.650000
+-0.112000,0.525000,0.200000
+-0.200000,0.525000,0.112000
+-0.200000,0.525000,-0.000000
+-0.364000,0.525000,0.650000
+-0.650000,0.525000,0.364000
+-0.650000,0.525000,-0.000000
+-0.364000,0.450000,0.650000
+-0.650000,0.450000,0.364000
+-0.650000,0.450000,-0.000000
+-0.200000,0.525000,-0.112000
+-0.112000,0.525000,-0.200000
+0.000000,0.525000,-0.200000
+-0.650000,0.525000,-0.364000
+-0.364000,0.525000,-0.650000
+0.000000,0.525000,-0.650000
+-0.650000,0.450000,-0.364000
+-0.364000,0.450000,-0.650000
+0.000000,0.450000,-0.650000
+0.112000,0.525000,-0.200000
+0.200000,0.525000,-0.112000
+0.364000,0.525000,-0.650000
+0.650000,0.525000,-0.364000
+0.364000,0.450000,-0.650000
+0.650000,0.450000,-0.364000
+0.000000,-0.750000,-0.000000
+0.750000,-0.675000,-0.000000
+0.750000,-0.675000,-0.420000
+0.420000,-0.675000,-0.750000
+0.000000,-0.675000,-0.750000
+0.750000,-0.712500,-0.000000
+0.750000,-0.712500,-0.420000
+0.420000,-0.712500,-0.750000
+0.000000,-0.712500,-0.750000
+0.712500,-0.750000,-0.000000
+0.712500,-0.750000,-0.399000
+0.399000,-0.750000,-0.712500
+0.000000,-0.750000,-0.712500
+-0.420000,-0.675000,-0.750000
+-0.750000,-0.675000,-0.420000
+-0.750000,-0.675000,-0.000000
+-0.420000,-0.712500,-0.750000
+-0.750000,-0.712500,-0.420000
+-0.750000,-0.712500,-0.000000
+-0.399000,-0.750000,-0.712500
+-0.712500,-0.750000,-0.399000
+-0.712500,-0.750000,-0.000000
+-0.750000,-0.675000,0.420000
+-0.420000,-0.675000,0.750000
+0.000000,-0.675000,0.750000
+-0.750000,-0.712500,0.420000
+-0.420000,-0.712500,0.750000
+0.000000,-0.712500,0.750000
+-0.712500,-0.750000,0.399000
+-0.399000,-0.750000,0.712500
+0.000000,-0.750000,0.712500
+0.420000,-0.675000,0.750000
+0.750000,-0.675000,0.420000
+0.420000,-0.712500,0.750000
+0.750000,-0.712500,0.420000
+0.399000,-0.750000,0.712500
+0.712500,-0.750000,0.399000
diff --git a/examples/quick3d/teapot/qml/teapot.qml b/examples/quick3d/teapot/qml/teapot.qml
index ebb126c0..2ebd8e32 100644
--- a/examples/quick3d/teapot/qml/teapot.qml
+++ b/examples/quick3d/teapot/qml/teapot.qml
@@ -44,7 +44,7 @@ import Qt3D 1.0
Viewport {
width: 640; height: 480
Item3D {
- mesh: Mesh { source: "meshes/teapot.bez" }
+ mesh: Mesh { source: "teapot.bez" }
effect: Effect {}
}
}
diff --git a/examples/quick3d/teapot/qmlres.h b/examples/quick3d/teapot/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/teapot/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H
diff --git a/examples/quick3d/teapot/teapot.pro b/examples/quick3d/teapot/teapot.pro
index c45709fb..758cd150 100644
--- a/examples/quick3d/teapot/teapot.pro
+++ b/examples/quick3d/teapot/teapot.pro
@@ -1,11 +1,23 @@
TEMPLATE = app
-TARGET = basket_qml
+TARGET = teapot
CONFIG += qt warn_on
-QT += declarative
-DESTDIR = ../../bin
+SOURCES += main.cpp
+HEADERS += qmlres.h
-qmlFiles.sources = qml
-DEPLOYMENT += qmlFiles
+QT += declarative
-SOURCES += main.cpp
+DESTDIR = ../../../bin/$$TARGET
+
+qmlResources.files = qml
+symbian {
+ DEPLOYMENT = qmlResources
+} else {
+ macx {
+ qmlResources.path = Contents/Resources
+ QMAKE_BUNDLE_DATA += qmlResources
+ } else {
+ qmlResources.path = $$OUT_PWD/../../../bin/$$TARGET.qml
+ INSTALLS += qmlResources
+ }
+}
diff --git a/examples/quick3d/textures/qmlres.h b/examples/quick3d/textures/qmlres.h
new file mode 100644
index 00000000..a027c35e
--- /dev/null
+++ b/examples/quick3d/textures/qmlres.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QMLRES_H
+#define QMLRES_H
+
+#include <QtCore/qdir.h>
+
+static inline QString q_get_qmldir(const QString &name)
+{
+ QString qml = name;
+ QDir dir = QApplication::applicationDirPath();
+ QString resDir = QApplication::applicationName() + QLatin1String("_resources");
+ if (dir.path().endsWith(QLatin1String("MacOS")))
+ {
+ // inside an app bundle - get qml resources from there
+ dir.cdUp();
+ dir.cd(QLatin1String("Resources"));
+ qml = dir.filePath(qml);
+ }
+ else if (dir.exists(resDir))
+ {
+ qml = dir.filePath(qml.prepend(resDir));
+ }
+ return qml;
+}
+
+#endif // QMLRES_H